多部分/表单数据使用什么编码?是否可以使用JQuery对数据进行编码?

多部分/表单数据使用什么编码?是否可以使用JQuery对数据进行编码?,jquery,file-upload,encoding,multipartform-data,Jquery,File Upload,Encoding,Multipartform Data,实际上,我想使用jQuery将图片发送到服务器,而不使用html表单。但我希望检索与使用encode类型的html表单接收到的数据相同的数据: multipart/form-data 我使用HTML5文件阅读器: 但是当我使用FileReader.readAsText(Blob | File,opt_encoding)函数时。我检索到的数据的编码与html表单的编码不同 “多部分/表单数据”使用什么编码?在将数据发送到我的服务器之前,是否可以使用jquery或javascript对数据进行编码

实际上,我想使用jQuery将图片发送到服务器,而不使用html表单。但我希望检索与使用encode类型的html表单接收到的数据相同的数据:

multipart/form-data
我使用HTML5文件阅读器:

但是当我使用
FileReader.readAsText(Blob | File,opt_encoding)
函数时。我检索到的数据的编码与html表单的编码不同

“多部分/表单数据”使用什么编码?在将数据发送到我的服务器之前,是否可以使用jquery或javascript对数据进行编码

//编辑

学校:

多部分/表单数据==>未编码任何字符。使用具有文件上载控件的表单时,此值是必需的

我遇到的问题是,当我从FileReader检索数据时,它与从HTML表单数据检索的数据不同

对于同一张图片: 使用html表单:

\xff\xd8\xff\xe1\x00\x18Exif\x00\x00II*\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xec\x00\x11Ducky\x00\x01\x00\x04\x00\x00\x00U\x00\x00\xff\xe1\x03)http://ns.adobe.com/xap/1.0/\x00<?xpacket begin="\xef\xbb\xbf" id="W5M0MpCehiHzreSzNTczkc9d"?>...
\xff\xd8\xff\xe1\x00\x18Exif\x00\x00II*\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf\xec\x00\x11Ducky\x00\x01\x00\x04\x00\x00\x00\x00U\x00\x00\x00\xf\x01\x03)http://ns.adobe.com/xap/1.0/\x00。。。
使用FileReader.readAsText():

\xc3\xbf\xc3\xc98\xc3\xbf\xc1\\u0000\\u0018Exif\\u0000\\u0000II*\\u0000\\b\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\xc3\xbf\xbf\xc3\xcxc3\u0000\\u0011decky\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0004\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\xcf\u0000http://ns.adobe.com/xap/1.0/\\u0000
如何检索相同的数据

您应该使用获取非文本文件的文件内容

此外,当您尝试发送数据时,它将被编码,为了防止这种情况发生,您可以使用它的非标准且仅在Gecko(firefox)中可用。这里有一个使用塑料填充的


当然,这一切都是微不足道的,因为支持文件Api和Uint8Array的浏览器也支持

好的,我在测试很多解决方案时发现了答案,我发现的有点奇怪

实际上,我使用函数
FileReader.readAsDataURL()
将数据以Base64格式发送到服务器

然后,我
split(',')
数据以仅获取服务器端的Base64数据我使用
my_Base64\u data\u decoded=Base64.b64解码(my_Base64\u data\u encoded)

起初,我使用“boto”将这些数据发送到Amazon,并使用以下命令对数据进行序列化:
cStringIO.StringIO(my_base64_data_decoded)
,但它不起作用

我创建了一本字典
我的字典

我做了
我的dict['data']=base64.b64解码(我的base64\u数据\u编码)

然后:
cStringIO.StringIO(我的dict['data'])
就成功了

现在我的问题是在插入字典时对数据做了什么处理


但至少我找到了答案。

像这样?我使用
FileReader.readAsBinaryString
检索完全相同的信息,实际上我的客户端和服务器之间的编码没有区别……我认为仅仅FileReader的功能并没有提供与HTML表单相同的编码。问题是:如何检索相同的编码?
\xc3\xbf\xc3\x98\xc3\xbf\xc3\xa1\\u0000\\u0018Exif\\u0000\\u0000II*\\u0000\\b\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\xc3\xbf\xc3\xac\\u0000\\u0011Ducky\\u0000\\u0001\\u0000\\u0004\\u0000\\u0000\\u0000U\\u0000\\u0000\xc3\xbf\xc3\xa1\\u0003)http://ns.adobe.com/xap/1.0/\\u0000<?xpacket begin=\\"\xc3\xaf\xc2\xbb\xc2\xbf\\" id=\\"W5M0MpCehiHzreSzNTczkc9d\\"?>
if (!XMLHttpRequest.prototype.sendAsBinary){
    XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
        function byteValue(x) {
            return x.charCodeAt(0) & 0xff;
        }
        var ords = Array.prototype.map.call(datastr, byteValue);
        var ui8a = new Uint8Array(ords);
        this.send(ui8a.buffer);
    }
}