【发布时间】:2011-11-25 04:50:16
【问题描述】:
我正在使用诱变剂将 ID3 标签数据从 CP-1251/CP-1252 转换为 UTF-8。在 Linux 中没有问题。但在 Windows 上,在 wx.TextCtrl 上调用 SetValue() 会产生错误:
UnicodeDecodeError: 'ascii' 编解码器无法解码位置上的字节 0xc3 0:序数不在范围内(128)
我从mutagen 提取的原始字符串(假设为 CP-1251 编码)是:
u'\xc1\xe5\xeb\xe0\xff \xff\xe1\xeb\xfb\xed\xff \xe3\xf0\xee\xec\xf3'
我已尝试将其转换为 UTF-8:
dd = d.decode('utf-8')
...甚至将默认编码从 ASCII 更改为 UTF-8:
sys.setdefaultencoding('utf-8')
...但是我得到了同样的错误。
【问题讨论】:
-
@sashoalm 抱歉,答案已经参考了示例(代码)。我认为你让问题脱颖而出是对的,但解决整个问题不是你的决定。
-
@sashoalm 废话,当所有答案都提到它时,不要删除代码。
-
如果最初以这种形式发布,这个问题会很好,但现在要核对它的所有内容已经太晚了。
-
是的,我试图让答案对来自 Google 搜索的人有用。我记得曾经读过 StackOverflow 应该提供规范的答案。也许我应该在 Meta 上询问我的编辑是否正确。
标签: python utf-8 wxpython cp1251