Python HTTP请求和UTF-8编码

camsedfj  于 2023-01-18  发布在  Python
关注(0)|答案(1)|浏览(157)

我使用urllib来执行对REST API的http请求。所有数据都是采用utf-8编码的JSON格式。问题是当我通过REST API读取一些特殊字符时,我得到了正确的编码(即,如果我读取90°C,则°正确编码为0xc 2 0xb 0),但当我将其与另一个请求一起发送回时,它似乎丢失了utf-8编码(即°编码为0xb 0)。
我做了一个小测试保存响应到文件:如果我将响应写为字节,则当我将响应加载为JSON然后写入文件时,我可以看到它被正确地编码,从而丢失UTF-8编码。

resp = urllib.request.urlopen(req,context=context)            
r = resp.read()
print(f'resp: {r}')        
f = open('test-utf8','wb')
f.write(r)
f.close()                
content = json.loads(r)
print(content)        
f = open('test2-utf8','w')
f.write(content['descrizione'])
f.close()

如果我在用json.loads阅读数据后发出一个新的请求来发送它,我会得到这个错误

unable to decode byte 0xb0 near \'"\'

如果我在发送请求之前使用encode('utf-8')decode('utf-8'),它不起作用。我错在哪里了?

mzsu5hc0

mzsu5hc01#

经过测试,我们发现这是tomcatrestful服务器上的编码问题。

相关问题