Python (2.7) 并从 Windows 命令行读取 Unicode argvs

Python (2.7) and reading Unicode argvs from the Windows command line

我一直在关注 this answer 如何使 Python (2.7) 能够从 Windows 命令行正确接收文件名,这些文件名例如 'canção.pdf''조선.pdf''मान.pdf'

我的bat文件(在shell:sendto)如下(建议here):

@echo off
@chcp 65001 > nul
@set PYTHONIOENCODING=utf-8
python "D:\Dropbox\Python\print_file_name.py" %1
pause

我的 python 脚本目前只是试图打印这些文件名:

sys.argv = win32_unicode_argv()
file_name = sys.argv[1].encode(sys.stdout.encoding)
print file_name

win32_unicode_argv()是描述here.

的方法

即使你可以正确打印 'canção.pdf',我仍然无法打印 '조선.pdf''मान.pdf'。关于如何解决这个问题有什么建议吗?

正在正确接收文件名。您可以通过将 sys.argv[1] 编码为 UTF-8 并将其写入文件(以二进制模式打开)然后在支持 UTF-8 的文本编辑器中打开文件来验证这一点。

尽管 'chcp' 命令将代码页更改为 UTF-8,但 Windows 命令提示符仍无法正确显示字符,因为终端字体不包含这些字符。命令提示符无法替换其他字体的字符。