Python:decode('utf8')用奇数字符中断

2024-09-29 23:23:25 发布

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

我正在建立一个聊天,似乎一些奇怪的字符正在悄悄地进入一些信息。。。这是一本词典的节选,里面有一堆信息。在

{'message': '"..." \x85 H.L. Mencken via Midas du Metropole #quotes',...}

注意\x85,这只是一个例子,\x92\x91,其他的也都被表示出来了。据我所知,这些都是不好的引号之类的,可能是有人贴上去的。在

这本词典通览了以下内容。。。在

^{pr2}$

这会导致以下错误:

UnicodeDecodeError: 'utf8' codec can't decode byte 0x85 in position 157: invalid start byte

它源自simplejson模块:

s = s.decode('utf-8')

我有点迷路了,我怎么能清理原始输入,这样我就不会遇到这个问题了?在


Tags: 信息messagebyte字符via例子词典quotes
2条回答

尝试用以下方法转换字典中的每个值:

v = v.decode('iso-8859-1')

在传递给simplejson之前。在

更新:这也起作用:

^{pr2}$

一些其他的尝试:

print simplejson.dumps(DICTIONARY, encoding='cp1252')

您将看到\u2026表示\x85字符,但这是该字符的正确Unicode代码点。在

输入字符串用cp1252编码。^{{cd2>在将字符串序列化到cd2}之前:

>>> D = {'message': '\x85 H.L. Mencken via \x91Midas\x92 du Metropole'.decode('cp1252')}
>>> D
{'message': u'\u2026 H.L. Mencken via \u2018Midas\u2019 du Metropole'}
>>> import json
>>> print(json.dumps(D))
{"message": "\u2026 H.L. Mencken via \u2018Midas\u2019 du Metropole"}

如果您的终端不支持其默认代码页中的字符,则此命令可能会引发一个UnicodeEncodeError,但它证明了上述序列化具有正确的Unicode代码点。在

^{pr2}$

相关问题 更多 >

    热门问题