python中的安全解码('?'符号而不是异常)

2024-09-29 17:15:27 发布

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

我有代码:

encoding = guess_encoding()    
text = unicode(text, encoding)

当文本中出现错误符号时,将引发UnicodeDecode异常。我怎样才能自动跳过用“?”替换错误符号的异常?在


Tags: 代码text文本错误unicode符号encodingguess
2条回答

在Python3中,可以使用decode方法将bytes对象解码为字符串。它可以接受两个参数: -encoding,默认为"utf-8",并且 -errors,它定义对非法字符序列的操作。默认值是"strict",它引发了一个UnicodeDecodeError;其他可选值是ignore和{},后者用Unicode替换字符"\uFFFD"替换非法字符。在

因此,您需要执行以下操作来解码和替换:

encoding = guess_encoding()
text = text_bytes.decode(encoding, errors='replace').replace('\uFFFD', '?')

正如Sven Marnach在注释中指出的那样,您可以将errors参数直接提供给open;否则您将在读取文件时得到解码错误(如果它不在字符映射中)。在

试试看

text = unicode(text, encoding, "replace")

documentation

'replace' causes the official Unicode replacement character, U+FFFD, to be used to replace input characters which cannot be decoded.

如果要使用"?"而不是官方的Unicode替换字符,可以这样做

^{pr2}$

转换为unicode后。在

相关问题 更多 >

    热门问题