我可以关闭隐式Python unicode转换来查找我的混合字符串错误吗?

时间:2010-05-17 18:00:05

标签: python debugging unicode decoding

在分析我们的代码时,我很惊讶地发现了数百万的电话     C:\ Python26 \ lib中\编码\ utf_8.py:15(解码)

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

怎么样。但是很贵!

我精通unicode,阅读Joel SpolskyDive Into Python ......

我尝试将代码内部仅保留在unicode中。

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

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

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

1 个答案:

答案 0 :(得分: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应该放在Python sitecustomize.py目录中的site-packages文件中(建议这样做) )。