首页 > 解决方案 > Python 调试器 (pdb) 编码

问题描述

在通过 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 字符串的对象的值(我使用的是 pandas,所以我所有的对象)你知道我怎样才能强制调试器使用用于编码和解码字符串的编解码器相同吗?我在调试模式下得到的只是关于字符串不匹配的错误。

注意:我正在通过命令从控制台运行程序python -i mycode.py

标签: pythonpython-2.7

解决方案


推荐阅读