3

我只想问是否有人知道使用 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")

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

4

1 回答 1

0

unicode(argv[1], "utf-8"

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

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

(*:好吧,除非你这样做chcp 65001,但这会导致很多其他东西翻倒,所以最好避免。)

于 2012-02-24T11:17:30.373 回答