我有一个使用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
以支持希伯来语。
答案 0 :(得分:0)
你完全以错误的方式解决这个问题。不要尝试将MPE请求的Content-Type更改为其他内容。此外,不要指望开发工具控制台中显示的数据反映正确解码的值。例如,如果您使用的是Mac,则用于检查表单数据的工具可能默认为Mac的Mac OS Roman默认字符编码。这并不一定表示实际表单数据字符编码存在问题。
您需要做的就是正确设置页面的编码:
<meta charset="utf-8" />
如果这样做,表单数据将采用UTF-8编码。您必须在服务器端正确解码它。