【问题标题】:Wicket messes uo the encoding of strings from JavascriptWicket 弄乱了 Javascript 中字符串的编码
【发布时间】:2019-12-11 20:05:00
【问题描述】:

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

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

我必须在 JavaScript 中进行 escape(),否则 Wicket 会将 & 符号解释为参数分隔符并将字符串分割成多个参数。

但是,这就是我在 Wicket 方面得到的结果:

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

有什么想法吗?我尝试了许多 unescape/decode 方法都无济于事......

非常感谢!

【问题讨论】:

    标签: java ajax encoding utf-8 wicket


    【解决方案1】:

    您的应用程序使用的字符编码似乎不支持某些发送的字符。

    确保在 Wicket 的 RequestCycleSettings 中使用良好的字符集。默认为 UTF-8,但您的应用程序可能已更改它。

    此外,如果您使用一些旧版本的 Servlet 容器,那么您可能需要在 Wicket 过滤器周围使用 Servlet 过滤器,该过滤器在 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() {
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-06
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 1970-01-01
      相关资源
      最近更新 更多