Python转换为ISO-8859-5

时间:2010-02-03 16:44:00

标签: python unicode encoding character-encoding

我在尝试将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”: !ё-№%«»(эюпоиуыяафйклж;нцхз

2 个答案:

答案 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')
あ