我有一个在primefaces 3 UTF-8编码的问题,但与此 (在web.xml中的字符编码添加过滤器),我的问题解决了。 但我有我的web.xml文件上传primefaces另一个过滤器。 在页面有文件上传,即使没有任何上传,我的字符编码过滤器不工作和UTF-8字符集具有未知值,就像当时有上载无过滤器。 我怎么可以同时使用此过滤器?
Answer 1:
这是PrimeFaces'的错误MultipartRequest
。 它使用表单域,而不是在HTTP Servlet请求的一组由做平台默认的字符编码HttpServletRequest#setCharacterEncoding()
中的字符编码过滤器(我假设在被映射web.xml
的PrimeFaces 前 FileUploadFilter
)。
基本上,线85和88 MultipartRequest
在PrimeFaces 3.3
formParams.get(item.getFieldName()).add(item.getString());
// ...
items.add(item.getString());
需要如下改变
formParams.get(item.getFieldName()).add(item.getString(getCharacterEncoding()));
// ...
items.add(item.getString(getCharacterEncoding()));
我已经报告说,它为问题4266 。 在此期间,你最好的赌注是手动修复在支持bean操作方法不正确的字符串编码如下,假设服务器平台默认的编码是ISO-8859-1:
string = new String(string.getBytes("ISO-8859-1"), "UTF-8");
Answer 2:
从本质上讲,你需要的代码来解决这个问题下面一行:
new String(file.getFileName().getBytes(Charset.defaultCharset()), "UTF-8")
文章来源: primefaces fileupload filter with utf8 characters filter