7

在分析我们的代码时,我惊讶地发现数百万次调用
C:\Python26\lib\encodings\utf_8.py:15(decode)

我开始调试,发现在我们的代码库中存在许多小错误,通常将字符串与 unicode 进行比较或添加 sting 和 unicode。Python 优雅地解码字符串并在 unicode 中执行以下操作。

多么体贴。但是很贵!

我精通 unicode,读过Joel Spolsky​​Dive Into Python ...

我尝试仅将我们的代码内部保存在 unicode 中。

我的问题 - 我可以关闭这个 pythonic 好人的行为吗?至少在我找到所有这些错误并修复它们之前(通常通过添加一个 u'u')?

其中一些很难找到(有时是字符串的变量......)。

Python 2.6.5(我无法切换到 3.x)。

4

1 回答 1

10

以下应该有效:

>>> 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放在 Pythonsite-packages目录中的文件中(建议这样做)。

于 2010-05-17T18:13:18.227 回答