【发布时间】:2017-02-23 01:13:15
【问题描述】:
所以我有一个message,它是从一个未知编码的文件中读取的。我想发送到网页进行显示。我对 UnicodeErrors 做了很多努力,并且在 StackOverflow 上经历了许多问答,我认为我对 Unicode 和编码的工作原理有很好的理解。我当前的代码是这样的
try :
return message.decode(encoding='utf-8')
except:
try:
return message.decode(encoding='latin-1')
except:
try:
print("Unable to entirely decode in latin or utf-8, will replace error characters with '?'")
return message.decode(encoding='utf-8', errors="replace")
然后将返回的消息转储为 JSON 并发送到前端。
我假设因为我在最后一个 try except 上使用了 errors="replace",所以我会以牺牲一些“?”为代价来避免异常。我的显示中的字符。可接受的成本。
但是,我似乎太抱有希望了,对于某些文件,我仍然收到UnicodeDecodeException 说“ascii 编解码器无法解码”某些字符。为什么errors="replace" 不解决这个问题?
(也是一个额外的问题,ascii 与这些有什么关系?.. 我指定的是 UTF-8)
【问题讨论】:
-
您能粘贴一个消息示例吗? SO 小部件忠实于 unicode 和其他奇怪的东西,因此它将成为真正的 minimal reproducible example
-
哪一行代码你得到了
UnicodeDecodeException? -
这是引发错误的最后一行。稍后我会更新异常跟踪。
-
如果对问题所在感到好奇,请查看我对@bobince 的回答的评论
标签: python python-2.7 unicode character-encoding