在python中读取json文件时,数据中会出现一些额外的unicode符号

时间:2014-08-21 08:05:02

标签: python json unicode

我需要从json文件中获取数据,以便在post-request中进一步发送它。不幸的是,当我读取文件时,开头的一些无法解释的unicode符号

path = '.\jsons_updated'
newpath = os.path.join(path, 'Totem Plus eT 00078-20140224_060406.ord.txt')
file = open(newpath, 'r')
#data = json.dumps(file.read())
data = file.read()
print('data= ', data)
file.close()

文件中的数据以此开头:

{"PriceTableHash": [{"Hash": ...

我得到了结果:

data=  п»ї{"PriceTableHash": [{"Hash": ...

或者在data = json.dumps(file.read())

的情况下
data=  "\u043f\u00bb\u0457{\"PriceTableHash\": [{  

所以我的请求无法处理这些数据。 我所有文件的奇数符号都是相同的。

UPD: 如果我在新的json或txt文件中手动复制数据,问题就会消失。但我有大约2,5k文件,所以这不是一个选项=)

1 个答案:

答案 0 :(得分:1)

命令open(newpath, 'r')使用系统的默认编码打开文件(无论哪个可能)。因此,当您读取编码的Unicode数据时,会破坏编码(因此,不使用UTF-8解码器读取UTF-8编码数据,Python将尝试使用Cp-1250或其他东西)。

改为使用codecs.open()并指定正确的数据编码(即写入文件时使用的编码)。

你得到的奇数字节看起来像BOM header。您可能希望更改编写这些文件的代码以省略它并向您发送纯UTF-8。另请参阅Reading Unicode file data with BOM chars in Python