我最近設計了一個由我在幾個應用程序中使用的PyCURL支持的上傳對話框。
我在設置pycurl的HTTPPOST選項時遇到了問題。我設置它是這樣的:
self.curl.setopt(self.curl.HTTPPOST,[(field,(self.curl.FORM_FILE,filename))]))
如果filename是一個字符串,則一切正常。如果我將它傳遞給unicode,它會引發TypeError。 有什麼辦法讓我能夠給它一個西里爾的路徑?我嘗試過使用UTF-8編碼,但沒有成功。 感謝您的時間使用pycurl從西里爾文路徑上傳文件
更新:
我真的開始從WX控制文件名,所以它的unicode之前,我甚至觸摸它。當我然後它編碼爲UTF-8,(使用文件名= filename.encode( 'UTF-8'))的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(「Filename:%r encoded filename:%r」%(filename,filename.encode('UTF-8')))
結果:
Sat Feb 05,2011 03:33:56 core .dialogs.upload_audio DEBUG:文件名: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?您使用什麼操作系統? – 2011-02-04 23:41:27
我試着用filename = filename.encode('UTF-8')。然後設置HTTPPOST選項的行:錯誤:(26,'創建表單數據'失敗)操作系統Windows。路徑如下:r「C:\ Users \ Q \ test \Тестоваяпапка\ test.mp3」 – 2011-02-05 00:48:49