Я могу выключить неявный Python unicode преобразования для нахождения моих ошибок смешанных строк?

При профилировании нашего кода я был удивлен найти миллионы вызовов к
C:\Python26\lib\encodings\utf_8.py:15 (декодируют)

Я начал отлаживать и нашел, что через нашу кодовую базу существует много небольших ошибок, обычно сравнивая строку с unicode или добавляя жало и unicode. Python любезно декодирует строки и выполняет следующие операции в unicode.

Как добрый. Но дорогой!

Я бегло говорю на unicode, считав Joel Spolsky и Погружение В Python...

Я пытаюсь сохранить наши внутренности кода в unicode только.

Мой вопрос - я могу выключить это pythonic поведение хорошего парня? По крайней мере, пока я не нахожу все эти ошибки и фиксирую их (обычно путем добавления u'u')?

Некоторых из них чрезвычайно трудно найти (переменная, которая иногда является строкой...).

Python 2.6.5 (и я не могу переключиться на 3.x).

7
задан Tal Weiss 17 May 2010 в 18:17
поделиться

1 ответ

Следующее должно работать:

>>> import sys
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.setdefaultencoding('undefined')
>>> u"abc" + u"xyz"
u'abcxyz'
>>> u"abc" + "xyz"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/encodings/undefined.py", line 22, in decode
    raise UnicodeError("undefined encoding")
UnicodeError: undefined encoding

reload (sys) в приведенном выше фрагменте необходимо только здесь, поскольку обычно sys.setdefaultencoding должен идти в sitecustomize.py в каталоге Python site-packages (желательно это сделать).

10
ответ дан 7 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: