【问题标题】:jQuery FormData - how to set character encoding?jQuery FormData - 如何设置字符编码?
【发布时间】:2013-08-25 08:47:18
【问题描述】:

我有一个使用FormData 对象上传jQuery.ajax() 的Web 应用程序。到现在为止还挺好。数据作为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 以支持希伯来语。

【问题讨论】:

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


    【解决方案1】:

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

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

    <meta charset="utf-8" />
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-07
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 2013-07-26
      • 2016-02-20
      相关资源
      最近更新 更多