urlrewriter的使用中的url中文问题

来源:互联网 发布:淘宝售后服务流程 换货 编辑:程序博客网 时间:2024/05/18 03:32
 这个问题一开始也搞死我了,在网上找了很多资料,也看了urlrewriter的源码,了解了一点。写出来跟大家分享一下,让大家碰到类似的问题可以kill掉。

在urlrewriter配置文件中<urlrewrite decode-using="">这个decode-using很搞人的哈。 不好好用就会出错的一般你的页面是utf-8编码 如果你的url中有中文,那中文使用js URIEncode()也可以硬编码成utf-8,这里注意一下的是在火狐里这个看上去还是中文,但是可能是火狐支持比较好。扯远了。如果你整个web项目都是使用的utf-8编码 这这里你要注意一下了,先看看下面的源码(org.tuckey.web.filters.urlrewrite.UrlRewriter)片段 跟url编码有关的

  1.  if (conf.isDecodeRequired()) {
  2.             try {
  3.                 originalUrl = URLDecoder.decode(originalUrl,conf.getDecodeUsing());
  4.                 if (log.isDebugEnabled()) {
  5.                     log.debug("after " + conf.getDecodeUsing() + " decoding " + originalUrl);
  6.                 }
  7.             } catch (java.io.UnsupportedEncodingException e) {
  8.                 log.warn("the jvm doesn't seem to support decoding " + conf.getDecodeUsing() + ", matches may not occur correctly.");
  9.                 return null;
  10.             }
  11.         }
也就是你这里配置文件配置了比编码格式以后,它在这里要跟你解码一次,如果你在filter里设置了编码格式,那里又要解码一次,这样搞两次,到后台你的参数就是几个??了,已经 不知道你是什么编码了。所以你什么都不要写,urlrewriter也不会去干涉你的编码 直接传到你的fliter里处理 这样的话就不会出问题了

希望说清楚了

原创粉丝点击