[jboss-jira] [JBoss JIRA] (WFLY-6742) javax.servlet.http.Part.getSubmittedFileName() uses wrong encoding

Maxim Wirt (JIRA) issues at jboss.org
Fri Jun 24 04:07:00 EDT 2016


    [ https://issues.jboss.org/browse/WFLY-6742?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13256673#comment-13256673 ] 

Maxim Wirt commented on WFLY-6742:
----------------------------------

The charset is set by a Filter

@WebFilter("/*")
public class UtfFilter implements Filter {
    private FilterConfig filterConfig = null;

    public UtfFilter() {
    }
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {

        if(request instanceof HttpServletRequest) {
            HttpServletRequest htRequest = (HttpServletRequest)request;
            try {
                htRequest.setCharacterEncoding("UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
                throw new ServletException(e);
            }
        }
        chain.doFilter(request, response);
    }


    public FilterConfig getFilterConfig() {
        return filterConfig;
    }

    public void setFilterConfig(FilterConfig filterConfig) {
        this.filterConfig = filterConfig;
    }

    public void destroy() {
    }

    public void init(FilterConfig filterConfig) {
        this.filterConfig = filterConfig;
    }
}


the servlet is

@WebServlet("/file")
@MultipartConfig
public class FileServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    System.out.println(request.getCharacterEncoding()); // returns "UTF-8"
    for (Part part : request.getParts()) {
        System.out.println("file=" + part.getSubmittedFileName()); //wrong name
        System.out.println(new String(part.getSubmittedFileName().getBytes("ISO-8859-1"), "UTF-8")); // correct name
    }
}
}

> javax.servlet.http.Part.getSubmittedFileName() uses wrong encoding
> ------------------------------------------------------------------
>
>                 Key: WFLY-6742
>                 URL: https://issues.jboss.org/browse/WFLY-6742
>             Project: WildFly
>          Issue Type: Bug
>          Components: Web (Undertow)
>    Affects Versions: 8.2.0.Final, 10.0.0.Final
>         Environment: Ubuntu 16.04 LTS
> oracle java
> java version "1.8.0_91"
> Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
> Wildfly 8.2.0.Final
> Wildfly 10.0.0.Final
>            Reporter: Maxim Wirt
>            Assignee: Stuart Douglas
>
> Servlet 3.1 file upload feature implementation uses incorrect character set for decoding file names
> request.getCharacterEncoding() returns "UTF-8", 
> System property file.encoding is set to UTF-8, but
> javax.servlet.http.Part.getSubmittedFileName() returns file name encoded using Latin character set
> all non-latin symbols in name of the file become unreadably characters.



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list