传递unicode字符串(日语字符串)作为命令行参数

时间:2012-02-24 05:32:41

标签: python unicode unicode-string

我只想问是否有人知道使用python 2.7,我将如何能够将unicode字符串(例如日文文件名)作为我的python脚本的命令行参数传递。一旦该文件名被正确地传递给函数/方法,一些引擎(DLL被识别为具有unicode支持)将完成一些文件处理(例如元数据提取/检索)。我尝试过以下但不幸的是,python崩溃了:

将文件名传递给将处理文件的方法:

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

关于方法,这是我解码传递的字符串的方式:

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

任何反馈都会有很大帮助。非常感谢!

1 个答案:

答案 0 :(得分:0)

  

unicode(argv [1],“utf-8”

不幸的是,Windows命令提示符使用的编码永远不会是(*)UTF-8。它是特定于语言环境的编码,因此您只能在日语Windows安装的参数中传递日语字符。

如果您希望能够从Python 2中可靠地读取参数中的Unicode字符,则必须嗅探以检测您是否在Windows上运行,并使用特定于Windows的API来读取args而不是标准C库那些依赖于语言环境编码的。有关使用ctypes执行此操作的示例,请参阅this answer

(*:好吧,除非你做chcp 65001,否则会导致很多其他东西掉下来,所以最好避免。)