我正在尝试使用websockets将文件从javascript网页上传到基于python的服务器。
在JS中,这就是我通过websocket传输数据包的方式:
var json = JSON.stringify({
'name': name,
'iData': image
});
在python中,我正在解码它:
noJson = json.loads(message)
fName = noJson["name"]
fData = noJson["iData"]
我知道fData是unicode格式,但是当我尝试在本地保存文件时,就会出现问题。说,我正在尝试上传/保存JPG文件。上传后查看该文件我在开头看到:
ÿØÿà^@^PJFIF
原始代码应为:
<FF><D8><FF><E0>^@^PJFIF
那么如何使用代码保存它而不是解释的unicode字符?
fd = codecs.open( fName, encoding='utf-8', mode='wb' ) ## On Unix, so the 'b' might be ignored
fd.write( fData)
fd.close()
(如果我不使用“encoding =”位,则抛出UnicodeDecodeError异常)
答案 0 :(得分:0)
使用'latin-1'
编码保存文件。
您获得的fData
已经编码了字符,即您获得字符串u'\xff\xd8\xff\xe0^@^PJFIF'
。 latin-1
编码将字面上将U + 00和U + FF之间的所有代码点转换为单个字符,并且无法转换U + FF之上的任何代码点。