我正在尝试用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异常)
使用
'latin-1'
编码保存文件。你知道吗你得到的
fData
已经编码了字符,也就是说,你得到了字符串u'\xff\xd8\xff\xe0^@^PJFIF'
。latin-1
编码将把U+00和U+FF之间的所有代码点转换成一个字符,而不能转换U+FF以上的任何代码点。你知道吗相关问题 更多 >
编程相关推荐