2012-02-24 110 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

相关问题