Что приводит к зависанию функции печати? Что я должен использовать для безопасной печати? - PullRequest
0 голосов
/ 07 июля 2011

У меня просто возникла куча проблем с пониманием того, что происходило при отладке UnicodeDecodeError с инструкциями печати. ​​

Я путал себя с сумасшедшими теориями, но в итоге проблема заключалась только в том, что печать конкретной строки зависала:

print '\xe6\x9c\xaa\xe5\x91\xbd\xe5\x90\x8d.jpg' 

Что заставляет его зависать?

Что мне вместо этого использовать для печати на консоли? print repr(x)

Ответы [ 2 ]

2 голосов
/ 07 июля 2011

Для меня это нормально работает в Linux

Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print '\xe6\x9c\xaa\xe5\x91\xbd\xe5\x90\x8d.jpg' 
未命名.jpg

Какую консоль вы используете?возможно, в нем есть ошибка

0 голосов
/ 07 июля 2011

Это выглядит как строка в кодировке UTF8:

>>> '\xe6\x9c\xaa\xe5\x91\xbd\xe5\x90\x8d.jpg'.decode('utf8')
u'\u672a\u547d\u540d.jpg'

Если ваша консоль может обрабатывать только ASCII, а не (скажем) UTF-8, она дает сбой, потому что нет способа декодировать этот ряд байтов в представляемую строку ASCII:

>>> '\xe6\x9c\xaa\xe5\x91\xbd\xe5\x90\x8d.jpg'.decode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)

Вам необходимо использовать консоль, которая поддерживает UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...