Python调试器(pdb)编码

2024-04-24 07:36:52 发布

您现在位置:Python中文网/ 问答频道 /正文

在通过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从控制台运行程序。你知道吗


Tags: 对象字符串编码编解码器模式解码pdb调试模式