我需要从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文件,所以这不是一个选项=)
答案 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