这里有一个小程序:
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]认为它正在获取ASCII字符串,但它无法转换为Unicode。但我使用的是具有完全Unicode感知的Mac终端,因此x.py
实际上正在获取Unicode字符串。如何告诉Python sys.argv []是Unicode而不是Ascii?如果失败,如何将ASCII(其中包含Unicode)转换为Unicode?常见的转换方法都不起作用。