2

我有一个使用该FormData对象上传 over的 Web 应用程序jQuery.ajax()。到目前为止,一切都很好。数据作为a发送,multipart/form-data服务器解析,没问题。

但是当我尝试在同一个请求中将其他数据与文件一起发送时,我遇到了字符编码问题。

我的“其他数据”是希伯来语,所以我需要编码为utf-8.

当我定义 ajax 选项contentType=false时,谷歌浏览器自动将内容类型请求标头设置为multipart/form-data; boundary=----webkitwhatever. 但是当我设置 ajax 选项时contentType="multipart/form-data; charset=utf-8",谷歌浏览器不会添加边界标头,服务器无法解析请求。但我认为无论如何都是错误的,因为即使我设置了charset=utf-8,当我在 chrome 的开发工具中的网络选项卡中查看请求时,我仍然看到编码为乱码的数据。

我怎样才能解决这个问题?需要明确的是,我希望能够同时发送带有文件上传和其他数据的 ajax 请求,并且能够将字符集编码设置utf-8为支持希伯来语。

4

1 回答 1

0

你完全以错误的方式解决这个问题。不要尝试将 MPE 请求的 Content-Type 更改为其他内容。此外,不要期望出现在开发工具控制台中的数据反映正确解码的值。例如,如果您在 Mac 上,您用来检查表单数据的工具可能默认为 Mac 的默认字符编码 Mac OS Roman。这并不一定表明实际表单数据字符编码存在问题。

您需要做的就是正确设置页面的编码:

<meta charset="utf-8" />

如果这样做,表单数据将采用 UTF-8 编码。您必须在服务器端正确解码。

于 2013-08-25T13:53:43.433 回答