使用jQuery fileupload到Spring控制器时,参数编码不正确

使用jQuery fileupload到Spring控制器时,参数编码不正确,jquery,spring,file-upload,utf-8,character-encoding,Jquery,Spring,File Upload,Utf 8,Character Encoding,我使用jquery文件上传从客户端上传文件。然后在服务器端(这是一个Spring应用程序)处理我的数据。我使用异步方法 文件和数据发送正确,但我的口音有问题。正如您在上面看到的(在发送之前必须添加一个文件),数据在客户端似乎编码良好 我通过执行以下操作手动发送数据: $form.fileupload( 'send', { files: filesList, formData: {nickname: 'ééééééé'} } ) 从下面可以看到,POS

我使用jquery文件上传从客户端上传文件。然后在服务器端(这是一个Spring应用程序)处理我的数据。我使用异步方法

文件和数据发送正确,但我的口音有问题。正如您在上面看到的(在发送之前必须添加一个文件),数据在客户端似乎编码良好

我通过执行以下操作手动发送数据:

$form.fileupload(
   'send', 
   {
      files: filesList,
      formData: {nickname: 'ééééééé'}
   }
)
从下面可以看到,POST标题中的数据似乎没有问题。

但是当我在SpringMVC应用程序中读取value参数时,我可以看到该值没有正确编码

我尝试使用
encodeURIComponent
对值进行编码,但以下是我从服务器端得到的信息:
%C3%A9%C3%A9%C3%A9%C3%A9%C3%A9%C3%A9%C3%A9

为什么参数编码不正确?也许问题出在服务器上

编辑:经过进一步研究,我发现内容类型在标题中定义如下:
content-type:multipart/formdata;边界=----WebKitFormBoundaryIhNpyB8xBBcA4blE
。但是它没有指定utf-8,我认为问题就在这里

编辑2:我将ajax查询的contentType设置为多部分/表单数据;charset=UTF-8'但我从服务器端得到一个错误:
由以下原因引起:org.apache.commons.fileupload.FileUploadException:请求被拒绝,因为找不到多部分边界


编辑3:在库jquery文件上载中,内容类型(在ajax请求中)设置为
false
。因为它是发送文件所需的内容类型。在我的例子中,我同时发送数据和文件,这就是我遇到问题的原因。

问题来自服务器端。当我使用Spring和多部分解析器时,需要指定编码。所以我改变了这个:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>

为此:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <property name="defaultEncoding" value="utf-8"/>
</bean>


而且它工作得很好

网页字符集是UTF-8吗?是的,但显然不是ajax调用。我正在研究如何将内容类型更改为utf-8。您可以放置整个代码吗?尝试在ajax PHP的第一行
mb_内部编码(“UTF-8”)中设置此代码同时查看您的PHP或HTML文件是否为ANSI或Unicode文件?问题不在于服务器端。这是ajax调用。它没有将字符集指定为utf-8。这里是内容类型:内容类型:多部分/表单数据;boundary=---webkitformboundaryShyjfn1xgjgwj0ij停止在客户端摆弄。一切都很好。FormData总是隐式地使用UTF-8。服务器端只是错误地将其解释为ISO-8859-1而不是UTF-8。同样,在调用任何
request.getXxx()方法之前,您是否尝试过
request.setCharacterEncoding(“UTF-8”)
?如果您这样做了,但它不起作用,那么请告诉我您是如何提取表单数据部分的?使用Servlet 3+本机API或第三方API,如Apache Commons FileUpload?