Primefaces UploadedFileName土耳其字符问题

时间:2015-03-25 16:40:55

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

我正在使用PrimeFaces 5.1和p:fileUpload组件上传图片。但我得到了土耳其语字符的未定义的chrachters(例如“ıçş”)。我研究并尝试了很多扫管笏,但我无法成功。I saw this question但没有解决我的问题。我的字符编码过滤器如下所示。我还在web.xml文件中为此定义了过滤器。

public class CharacterEncodingFilter implements Filter {

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
            req.setCharacterEncoding("ISO-8859-9");
            resp.setCharacterEncoding("ISO-8859-9");
            chain.doFilter(req, resp);
    }

    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void destroy() {

    }}

我的handleFileUpload方法

public void handleFileUpload(FileUploadEvent event) {
try {
System.out.println(new String(event.getFile().getFileName().getBytes("UTF-8")));
System.out.println(new String(event.getFile().getFileName().getBytes("ISO-8859-9")));
} catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

}

我将这个文件名称改为UTF8和ISO-8859-9 charsets为“Adsız.png”。

ADSA“A±z.png

ADSA±z.png

2 个答案:

答案 0 :(得分:0)

感谢@BalusC的宝贵意见。我改为Tomcat编码Cp1254到UTF-8,我确认我使用了原生PrimeFaces库并解决了这个问题。再次感谢@BalusC。

答案 1 :(得分:-2)

您可以查看此主题吗?试试这段代码。 Java Uploaded File Name

Web.xml中

<filter>
    <filter-name>Character Encoding Filter</filter-name>
    <filter-class>org.primefaces.examples.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>Character Encoding Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>