[
https://issues.jboss.org/browse/WFLY-6742?page=com.atlassian.jira.plugin....
]
Maxim Wirt edited comment on WFLY-6742 at 6/24/16 4:18 AM:
-----------------------------------------------------------
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
}
}
}
was (Author: maximwirt):
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
Attachments: визитка.svg
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)