使用primefaces上传文件时编码问题

时间:2012-08-20 12:05:14

标签: java jsf file-upload character-encoding primefaces

我遇到与here相同的问题。

我使用primefaces 2.2 jsf实现。我尝试了所有的方法,但没有任何作用。还有其他解决方案吗?     当我尝试new String (s.getBytes ("iso-8859-1"), "UTF-8");时, 我怎么知道输入编码?

3 个答案:

答案 0 :(得分:4)

String fileName=new String(event.getFile()
                                 .getFileName()
                                 .getBytes(Charset.defaultCharset()),"UTF-8").toUpperCase(locale);

答案 1 :(得分:1)

输入编码是您的服务器使用的默认编码而不是UTF-8。因此它是应用程序范围的设置,因此不依赖于特定的HTTP请求/客户端。它通常与Charset#defaultCharset()相同。

至于具体问题,请注意PrimeFaces 3.3目前仍然在努力解决这个问题。另请参阅primefaces fileupload filter with utf8 characters filter,您可以在其中找到一些提示来破解PrimeFaces源代码本身以修复错误。

答案 2 :(得分:0)

我在开发日语网站时也遇到过这种问题。文字变成了未知的字符。经过一些谷歌搜索,我能够解决这个问题。 这是我的解决方案。

<h:form enctype="multipart/form-data;charset=UTF-8">
  <p:fileUpload id="image" immediate="true" auto="true" sizeLimit="1048576" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" fileUploadListener="#{uploadController.uploadListener}" mode="advanced" multiple="true"/>
</h:form>

您只需在表单的enctype中添加multipart/form-data;charset=UTF-8