我正在处理用拉丁文编码的外部数据。所以我添加了sitecustomize.py
,并在其中添加了
sys.setdefaultencoding('latin_1')
当然,现在使用拉丁1字符串可以很好地工作。在
但是,万一我遇到一些不是拉丁语编码的东西:
^{pr2}$我得到UnicodeEncodeError: 'latin-1' codec can't encode character u'\u2013' in position 3: ordinal not in range(256)
我想要的是,不可编码的字符将被忽略,也就是说,我将在上面的示例s=='abc?'
中得到它,并且每次都不显式地调用decode()
或{
我试着用codecs.register_error
做不同的事情,但是没有用。在
请帮忙?在
脚本不能调用是有原因的sys.setdefaultencoding. 不要这样做,有些库(包括Python附带的标准库)希望默认值为“ascii”。在
相反,在读入程序时(通过文件、stdin、socket等)显式地将字符串解码为Unicode,并在写出字符串时显式地对字符串进行编码。在
显式解码采用一个参数,指定不可编码字节的行为。在
您可以定义自己的自定义处理程序,并使用它来做您想做的事。请参见以下示例:
运行它,您将看到:
^{pr2}$参考文献:
相关问题 更多 >
编程相关推荐