【发布时间】:2011-02-25 04:29:44
【问题描述】:
这是一个小程序:
import sys
f = sys.argv[1]
print type(f)
print u"f=%s" % (f)
这是我运行的程序:
$ python x.py 'Recent/רשימת משתתפים.LNK'
<type 'str'>
Traceback (most recent call last):
File "x.py", line 5, in <module>
print u"f=%s" % (f)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 7: ordinal not in range(128)
$
问题在于 sys.argv[1] 认为它正在获取一个无法转换为 Unicode 的 ascii 字符串。但是我使用的是带有完整 Unicode 感知终端的 Mac,所以 x.py 实际上得到了一个 Unicode 字符串。我如何告诉 Python sys.argv[] 是 Unicode 而不是 Ascii?如果做不到这一点,如何将 ASCII(其中包含 unicode)转换为 Unicode?明显的转换不起作用。
【问题讨论】:
-
Ben,就 Unicode 而言,这是 Mac 特有的问题,尽管它确实涉及一些相同的概念。
标签: python macos unicode terminal