我打开的文件中有奇怪的 字符

时间:2016-02-23 11:25:04

标签: python xml encoding character-encoding

我在Python中打开了一个.dat文件但是在每次<之后它似乎被cor损坏了。字符。 我的开场代码是:

    DataFileIn = open(datFileName, "r") 
    DataList = DataFileIn.readline() 
    DataList.decode(encoding='UTF-8',errors='strict')    
    logging.info( DataList )
    DataFileIn.close() 

我的输出是

INFO:......<�?xml version="1.0" encoding="UTF-8"?><�ETSParameterType><�BlobParameter><�CommissioningMode>0<�/CommissioningMode><�NightMode>0<�/NightMode><�SceneObjects>1<�/SceneObjects><�EffectObjects>0<�/EffectObjects> ...

当我在Notepad ++中打开文件时,它会说UCS-2 Little Endian,我希望它能说UTF-8。请帮忙。

1 个答案:

答案 0 :(得分:1)

您有UTF-16数据,采用小端排序,而不是UTF-8。使用错误的编码保存文件,或者,XML声明中的encoding信息是错误的。

使用utf-16-le编解码器

将其解码为UTF-16
DataList = DataList.decode(encoding='utf-16-le')

您需要使用utf-16-le编解码器而不是普通utf-16,因为Byte Order Mark丢失了。