Character encoding FileReference.upload无法正确发布包含其他unicode参数的多部分表单

Character encoding FileReference.upload无法正确发布包含其他unicode参数的多部分表单,character-encoding,flex4,multipartform-data,filereference,Character Encoding,Flex4,Multipartform Data,Filereference,我在一个Flex 4.0项目中,试图使用FileReference.upload()发布到Java servlet。我在帖子中发送了一些额外的参数,比如专辑名。当字符位于Latin1字符集中时,此操作非常有效。当我试图发布一个日文字符或一些Unicode字符时,它在Java端无法通过 FileReference.upload()忽略内容类型设置,默认情况下使用多部分/表单数据的内容类型。我不知道在这种情况下默认的编码是什么。看起来它不是UTF-8 在java端,httpServletReques

我在一个Flex 4.0项目中,试图使用FileReference.upload()发布到Java servlet。我在帖子中发送了一些额外的参数,比如专辑名。当字符位于Latin1字符集中时,此操作非常有效。当我试图发布一个日文字符或一些Unicode字符时,它在Java端无法通过

FileReference.upload()忽略内容类型设置,默认情况下使用多部分/表单数据的内容类型。我不知道在这种情况下默认的编码是什么。看起来它不是UTF-8

在java端,httpServletRequest.getCharacterEncoding()显示null。方法是POST,但我无法确认数据是如何编码的


所以问题是,我似乎无法使用FileReference.upload(),因为用户正在选择要上载的文件。我需要发送Unicode,但我无法让Flash正确编码。不确定使用URLLoader是否有帮助,或者我是否可以将FileReference中的数据输入URLLoader(然后丢失进度事件)。

因此答案与Java端有关,而不是与Flex端有关。我必须将Tomcat server.xml中的URIEncoding=“UTF-8”添加到端口8080和8443的连接器中。这就是传递unicode值所需要的。然后,我必须确保我的数据源(SQL Server)设置为使用sendStringParametersAsUnicode=true。现在我可以将unicode从Flex应用程序发布到Java应用程序,并将其保存在数据库中。

无需处理server.xml。您只需在servlet中将请求字符集设置为UTF-8

request.setCharacterEncoding("UTF-8");