2012-02-24 61 views
2

我會問,如果有人知道使用Python 2.7,我將如何能夠傳遞一個unicode字符串(例如日文文件名)作爲我的python腳本的命令行參數。一旦這個文件名正確地傳遞給函數/方法,一些文件處理將由某個引擎(一個被標識爲具有unicode支持的DLL)完成(例如,元數據提取/檢索)。我試過以下,但不幸的是,蟒蛇崩潰:傳遞一個unicode字符串(日文字符)作爲命令行參數

傳遞文件名的方法將處理的文件:

processingMethod(unicode(argv[1], "utf-8", errors="ignore").encode("utf-8")) 

的方法,我這是怎麼解碼傳遞的字符串:

unicode(file_path).decode("utf-8") 

任何反饋將有很大的幫助。非常感謝!

+0

修正:processingMethod(UNICODE(的argv [1], 「UTF-8」,錯誤=「忽略」)。encode(「utf-8」)) – jaysonpryde 2012-02-24 05:36:59

+0

我已經爲你做了編輯。將來,請記住,您始終可以編輯自己的帖子。 – 2012-02-24 05:43:53

+2

命令行參數由操作系統生成。你在使用哪種操作系統? – 2012-02-24 06:03:05

回答

0

的unicode(argv的[1], 「UTF-8」

不幸的是,由Windows命令提示使用的編碼是從未(*)UTF-8,它是一個特定於區域的編碼,所以你只能在日文Windows安裝的參數中傳遞日文字符

如果你想能夠從Python 2中可靠地讀取參數中的Unicode字符,你必須嗅探才能檢測到你在Windows上運行,並使用特定於Windows的API來讀取參數,而不是依賴於區域設置編碼的標準C庫。請參閱this answer爲一個與ctypes做它的例子。

(*:好了,除非你做chcp 65001,但導致很多其他的東西翻倒所以最好避免使用。)

+0

非常感謝。很有幫助 :) – jaysonpryde 2012-02-24 11:35:04

相關問題