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 命令提示符仍无法正确显示字符,因为终端字体不包含这些字符。命令提示符无法替换其他字体的字符。
我一直在关注 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 命令提示符仍无法正确显示字符,因为终端字体不包含这些字符。命令提示符无法替换其他字体的字符。