최근 몇 가지 내 응용 프로그램에서 사용하고있는 PyCURL 기반의 업로드 대화 상자를 설계했습니다.
pycurl의 HTTPPOST 옵션을 설정할 때 문제가 발생했습니다. 나는 이렇게 설정하고있다.
self.curl.setopt (self.curl.HTTPPOST, [(field, (self.curl.FORM_FILE, filename))])
filename이 문자열이면 모두 정상이다. 그러나 유니 코드를 전달하면 TypeError가 발생합니다. 내가 키릴 문자 경로를 줄 수있는 방법이 있습니까? UTF-8 인코딩을 시도했지만 실패했습니다. 는 시간 내 주셔서 감사pycurl을 사용하여 키릴 문자 경로에서 파일 업로드
업데이트 :
내가 실제로 WX 컨트롤에서 파일 이름을 받고 있어요, 그래서도 만지지 전에 유니 코드입니다. 그때 UTF-8로 인코딩 할 때, 수행 (('UTF-8') = filename.encode을 파일 이름을 사용) SETOPT 잘 간다하지만 모든 것이 최대의 불면 :
* About to connect() to example.com port 80 (#0)
* Trying 123.123.123.123... * connected
* Connected to example.com (123.123.123.123) port 80 (#0)
* failed creating formpost data
* Connection #0 to host example.com left intact
Traceback (most recent call last):
File "c:\python27\lib\site-packages\transfer_dialogs-0.28-py2.7.egg\transfer_dialogs\transfer_dialogs.py", line 64, in perform_transfer
self.curl.perform()
error: (26, 'failed creating formpost data')
업데이트를 2 :
요청에 따라 조금 더 많은 데이터가 필요합니다. filename은 열려있는 대화 상자의 GetValue() 결과를 포함합니다.
logging.debug ("파일명 : % r을 부호화 파일명 : % R"% (파일명 filename.encode ("UTF-8")))
결과 :
토 2011년 2월 5일 3시 33분 56초 코어 .dialogs.upload_audio 디버그 : 파일 이름 : u'C : \ Users \ Q \ test \\ u0422 \ u0435 \ u0441 \ u0442 \ u043e \ u0432 \ u0430 \ u044f \ u043f \ u0430 \ u043f \ u043a \ u0430 \ test.mp3 ' 인코딩 된 파일 이름 : 'C : \ Users \ Q \ test \ xd0 \ xa2 \ xd0 \ xb5 \ xd1 \ x81 \ xd1 \ x82 \ xd0 \ xbe \ xd0 \ xb2 \ xd0 \ xb0 \ xd1 \ x8f \ xd0 \ xbf \ XD0 \ xb0 \ XD0 \ XBF \ XD0 \ XBA \ XD0 \ xb0 \ test.mp3 '
"UTF-8 인코딩을 시도했지만 실패했습니다."- 시도한 방법과 결과는 무엇입니까? 횡설수설, 예외 (역 추적이 도움이됩니다), 기타). 또한 : "키릴 문자 경로"는 무엇입니까 ?? 예를 들어에 인코딩 된 파일 이름/경로 cp1251? 어떤 운영 체제를 사용하고 있습니까? –
filename = filename.encode ('UTF-8')로 시도했습니다. HTTPPOST 옵션을 설정 한 행에서 다음을 발생시킵니다. error : (26, 'formpost 데이터 작성 실패') OS Windows. 경로는 다음과 같습니다 : r "C : \ Users \ Q \ test \ Тестовая папка \ test.mp3" –
'something_like (filename)'대신에'repr()'을 사용하여 유니 코드 파일의 이름을 명확하게 표시하십시오 wx 컨트롤에서. –