Wicket弄乱了Javascript

时间:2019-08-03 14:33:59

标签: java ajax encoding utf-8 wicket

在使用JavaScript的Wicket组件的上下文中,我将以下字符串发送回Wicket:

“ FICHIERfichier&é'(-è_çà)=〜#{[`^ @]} ^ $ù,;!¨£%µ§êë- +¤.0²123456789.pdf”

我必须在JavaScript中对这进行转义,因为否则Wicket会将与号解释为参数定界符,并将字符串切成多个参数。

但是,这就是我对Wicket的看法:

“ FICHIERfichier&。'(-�_��)=〜#{[`^ @]} ^ $�,;!��%����-..0.123456789.pdf”

有什么想法吗?我尝试了许多unescape / decode方法都没有用...

非常感谢!

1 个答案:

答案 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() {
  }

}