jQuery FormData - 如何设置字符编码?

时间:2013-08-25 08:47:18

标签: jquery ajax google-chrome encoding utf-8

我有一个使用FormData对象上传jQuery.ajax()的网络应用程序。到现在为止还挺好。数据以multipart/form-data的形式发送,服务器解析它,没问题。

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

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

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

我该如何解决这个问题? 为了清楚起见,我希望能够同时发送带有文件上传和其他数据的ajax请求,并能够将charset编码设置为utf-8以支持希伯来语。

1 个答案:

答案 0 :(得分:0)

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

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

<meta charset="utf-8" />

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