在Python读取JSON文件时出现额外的unicode符号
我需要从一个json文件中获取数据,然后把这些数据发送到一个请求里。不过,当我读取这个文件的时候,发现开头有一些奇怪的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\": [{
所以我的请求无法处理这些数据。奇怪的符号在我所有的文件里都是一样的。
更新:如果我手动把数据复制到一个新的json或txt文件里,这个问题就消失了。但我大约有2500个文件,所以这样做不太现实=)
1 个回答
1
命令 open(newpath, 'r')
是用你电脑默认的编码方式来打开文件的(具体是什么编码就看你电脑的设置了)。所以当你读取编码过的Unicode数据时,这样做可能会搞乱编码(也就是说,Python可能会用Cp-1250这种编码来读取本来应该用UTF-8解码的数据)。
建议你使用 codecs.open()
,并且明确指定数据的正确编码(也就是当文件被写入时使用的编码)。
你看到的那些奇怪的字节看起来像是一个 BOM头。你可能需要修改写入这些文件的代码,去掉这个头,直接发送纯粹的 UTF-8
数据。还可以参考一下 在Python中读取带有BOM字符的Unicode文件数据。