在通过pdb处于调试模式时,python存在以下问题。
似乎调试模式下的python与正常模式下的字符集不同。我会尝试在以下几点上进行更好的解释:
(pdb) "ó"
'\xa2'
(pdb) (u"ó")
u'\xa2'
(pdb) print u"ó"
¢
>>> "ó"
'\xa2'
>>> u"ó"
u'\xf3'
>>> print u"ó"
ó
这两种模式似乎都是在cp858中编码的,而调试模式似乎是使用cp1252编解码器(这是我用# -*- coding: cp1252 -*-
明确声明的一种)解码的,而普通模式似乎是在cp858中解码的。我们可以从以下结果中看到证据:
>>> '\xa2'.decode("cp858")
u'\xf3'
>>> '\xa2'.decode("cp1252")
u'\xa2'
问题的重要性在于,在调试模式下,我看不到具有unicode字符串的对象的值(我使用的是熊猫,所以我所有的对象)您知道如何强制调试器使用相同的编解码器来编码和解码字符串?我所有进入调试模式的都是关于字符串不匹配的错误。
注意:我正在通过命令python -i mycode.py
从控制台运行该程序。