要澄清:这个问题不是this one的重复,我已经尝试过那里的所有提示并且没有得到答案。
我有一个带有unicode数据的txt文件,我希望将该文件作为字符串打开。
我试过
a=open('myfile.txt', 'r', encoding='utf-8')
print a.read()
但是有一个错误说:
UnicodeDecodeError:' charmap'编解码器不能对字符' \ ufeff'进行编码。在 位置Y:字符映射到未定义
现在我的问题是,我根本不关心我的UTF-8字符,无论如何都要设置一个例外,即每当python遇到utf-8字符时只需删除它或传递它? 另外澄清一下,我尝试过使用utf-8,utf-8-sig,utf-16等进行编码。
我也试过了,但没有运气。
a=open('myfile.txt', 'r', encoding='utf-8')
try:
print a.read()
except:
pass
我也尝试导入编解码器和下面的代码:
a=codecs.open('myfile.txt', 'r', encoding='utf-8')
print a.read()
但仍然出现同样的错误。
答案 0 :(得分:2)
在print
声明中更正我的编码答案:
避免打印到stdout
Windows,因为Python假定CMD终端只能处理Windows-1252(latin-1的ISO副本)。总是打印到stderr
代替:
import sys
print('your text', file=sys.stderr)
在Linux上,正确打印Unicode应该没有问题。
Python 2.x的P.S。::
from __future__ import print_function
import sys
print('your text', file=sys.stderr)
<强> P.P.S:强> 原始答案: 对于python 3.x:
a=open('myfile.txt', 'r', encoding='utf-8', errors='ignore')
有关选项的详细列表,请参阅https://docs.python.org/3/library/codecs.html#error-handlers