zor*_*064 7 file-upload utf-8 character-encoding primefaces jsf-2
我在primefaces 3中有utf-8编码的问题但是有了这个(在web.xml中为字符编码添加过滤器),我的问题就解决了.但我在web.xml中有另一个关于primefaces fileupload的过滤器.在存在fileupload的页面中,即使没有上传任何内容,我的字符编码过滤器也不起作用,并且utf-8字符集具有未知值,就像没有用于上载的过滤器一样.我如何一起使用这个过滤器?
Bal*_*usC 12
这是PrimeFaces的一个错误MultipartRequest.它使用表单字段的平台默认字符编码,而不是HTTP servlet请求中设置的那个,就像HttpServletRequest#setCharacterEncoding()你的字符编码过滤器(我假设它已经在PrimeFaces web.xml 之前映射FileUploadFilter)一样.
基本上,MultipartRequestPrimeFaces 3.3中的第85和88行
formParams.get(item.getFieldName()).add(item.getString());
// ...
items.add(item.getString());
Run Code Online (Sandbox Code Playgroud)
需要改变如下
formParams.get(item.getFieldName()).add(item.getString(getCharacterEncoding()));
// ...
items.add(item.getString(getCharacterEncoding()));
Run Code Online (Sandbox Code Playgroud)
我已将其报告为问题4266.同时,假设服务器平台默认编码为ISO-8859-1,最好的办法是在boot bean操作方法中手动修复错误的字符串编码,如下所示:
string = new String(string.getBytes("ISO-8859-1"), "UTF-8");
Run Code Online (Sandbox Code Playgroud)
基本上,您需要以下代码行来解决此问题:
new String(file.getFileName().getBytes(Charset.defaultCharset()), "UTF-8")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8272 次 |
| 最近记录: |