我在尝试将UTF-8文件(包含俄语字符)转换为ISO-8859-5文件时遇到问题:'charmap'编解码器无法对位置0中的字符u'\ ufeff'进行编码:字符映射到。有没有人知道什么是错的(?)给出以下内容:
def convert():
try:
import codecs
data = codecs.open('in.txt', 'r', 'utf-8').read()
except Exception, e:
print e
sys.exit(1)
f = open('out.txt', 'w')
try:
f.write(data.encode('iso-8859-5'))
except Exception, e:
print e
finally:
f.close()
“in.txt”: !ё-№%«»(эюпоиуыяафйклж;нцхз
答案 0 :(得分:2)
feff是Byte-Order-Mark个字符。 ISO-8859-5将不具有任何代表性。
在将其编码为ISO-8859-5之前,您需要将其从data
变量中删除。
答案 1 :(得分:2)
Python的最新版本具有utf-8-sig
编解码器,在读取时会自动从UTF-8编码的字符串或文件中剥离BOM:
>>> print '\xef\xbb\xbf\xe3\x81\x82'.decode('utf-8-sig')
あ