Zgodnie z dokumentacją, w Pythonie 2.7.3, shlex powinien obsługiwać standard UNICODE. Jednak po uruchomieniu kodu poniżej otrzymam: UnicodeEncodeError: 'ascii' codec can't encode characters in position 184-189: ordinal not in range(128)
shlex.split wciąż nie obsługuje Unicode?
Czy robię coś nie tak?
import shlex
command_full = u'software.py -fileA="sequence.fasta" -fileB="新建文本文档.fasta.txt" -output_dir="..." -FORMtitle="tst"'
shlex.split(command_full)
Dokładny błędu jest następujący:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shlex.py", line 275, in split
lex = shlex(s, posix=posix)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shlex.py", line 25, in __init__
instream = StringIO(instream)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 44-49: ordinal not in range(128)
Jest to wyjście z moim Mac przy użyciu Pythona z DarwinPorts. Dostaję dokładnie taki sam błąd na komputerze z Ubuntu z "natywnym" pythonem 2.7.3.
To nie obsługuje 'Unicode()' obiektu; nie może obsłużyć nic poza znakami ASCII, nawet jeśli teraz używa się obiektu 'unicode()'. –
@MartijnPieters to błąd lub oczekiwane zachowanie? Nie mogłem znaleźć żadnego odniesienia do ograniczenia w dokumentacji – petr
Znany błąd, powiedziałbym, zobacz [ten problem] (http://bugs.python.org/issue742290). –