【发布时间】:2012-08-20 12:05:13
【问题描述】:
我和here有同样的问题。
我使用 primefaces 2.2 jsf 实现。我已经尝试了所有方法,但没有任何效果。还有其他解决方案吗?
当我尝试new String (s.getBytes ("iso-8859-1"), "UTF-8");时,
我怎么知道输入编码?
【问题讨论】:
标签: java jsf file-upload character-encoding primefaces
我和here有同样的问题。
我使用 primefaces 2.2 jsf 实现。我已经尝试了所有方法,但没有任何效果。还有其他解决方案吗?
当我尝试new String (s.getBytes ("iso-8859-1"), "UTF-8");时,
我怎么知道输入编码?
【问题讨论】:
标签: java jsf file-upload character-encoding primefaces
String fileName=new String(event.getFile()
.getFileName()
.getBytes(Charset.defaultCharset()),"UTF-8").toUpperCase(locale);
【讨论】:
输入编码是您的服务器使用的默认编码,而不是 UTF-8。所以它是一个应用程序范围的设置,因此不依赖于特定的 HTTP 请求/客户端。通常它与Charset#defaultCharset() 相同。
至于具体问题,请注意 PrimeFaces 3.3 目前仍在努力解决这个问题。另请参阅primefaces fileupload filter with utf8 characters filter,您可以在其中找到一些提示,以破解 PrimeFaces 源代码本身来修复错误。
【讨论】:
我在开发日文网站的时候也遇到过这种问题。文本变成未知字符。经过一番谷歌搜索后,我能够解决这个问题。 这是我的解决方案。
<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>
您只需在表单的编码类型中添加multipart/form-data;charset=UTF-8。
【讨论】: