Вот небольшая программа:
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. Но я использую Mac с полным Unicode-терминалом, поэтому x.py
фактически получает строку Unicode. Как сообщить Python, что sys.argv [] является Unicode, а не Ascii? В противном случае, как преобразовать ASCII (который имеет unicode внутри него) в Unicode? Очевидные преобразования не работают.