在使用JavaScript的Wicket组件的上下文中,我将以下字符串发送回Wicket:
“ FICHIERfichier&é'(-è_çà)=〜#{[`^ @]} ^ $ù,;!¨£%µ§êë- +¤.0²123456789.pdf”
我必须在JavaScript中对这进行转义,因为否则Wicket会将与号解释为参数定界符,并将字符串切成多个参数。
但是,这就是我对Wicket的看法:
“ FICHIERfichier&。'(-�_��)=〜#{[`^ @]} ^ $�,;!��%����-..0.123456789.pdf”
有什么想法吗?我尝试了许多unescape / decode方法都没有用...
非常感谢!
答案 0 :(得分:0)
您的应用程序使用的字符编码似乎不支持某些发送的字符。
确保在Wicket的RequestCycleSettings中使用好的字符集。默认情况下,它是UTF-8,但是您的应用程序可能已对其进行了更改。
此外,如果您使用旧版本的Servlet容器,则可能需要在Wicket Filter周围使用Servlet Filter,以在HttpServletRequest上设置字符编码。快速搜索“ Servlet过滤器字符编码”给出了一个很好的例子:https://stackoverflow.com/a/11100412/497381。
public class CustomCharacterEncodingFilter implements Filter {
public void init(FilterConfig config) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
public void destroy() {
}
}