日期:2014-05-18  浏览次数:20869 次

着急:urlrewrite+IIS下映射中文目录名乱码,求解!
先说说我的运行环境:urlrewrite-2.6.0.jar,TOMCAT   5.0.X,   JDK   1.4.X,win2000下使用IIS

整合技术将80端口配置到我的域名www.abc.com上。
WEB-INF中通过FILTER控制编码为UTF-8.

我希望将如下的访问:
http://www.abc.com/search/search.jsp?keys=%E6%9E%97%E4%BF%8A%E6%9D%B0
(keys是中文,直接访问没有问题)
映射成http://www.abc.com/search/keys/%E6%9E%97%E4%BF%8A%E6%9D%B0
(问题出现了,得不到正确结果,问号出现)


现象是:8081端口下,也就是不通过IIS   ISAPI   是完全没有问题的。
但是80端口就出现乱码。无法得到正常的查询结果,明显的keys变成了问号。

求解?   貌似同时做过IIS+urlrewrite+中文   的人不多,因为我网上查询的所有文章都没有提到过

中文或者编码的问题。

urlrewrite.xml配置如下:
<?xml   version= "1.0 "   encoding= "utf-8 "?>

        <!DOCTYPE   urlrewrite
                PUBLIC   "-//tuckey.org//DTD   UrlRewrite   3.0//EN "
                "http://tuckey.org/res/dtds/urlrewrite3.0.dtd ">

<urlrewrite>
                <rule>
                  <from> /search/keys/(.*)$ </from>
                  <to   type= "forward "> /search/search.jsp?keys=$1 </to>
          </rule>
        </urlrewrite>

TOMCAT的server.xml代码片段:
<Connector   port= "8081 "
                              maxThreads= "150 "   minSpareThreads= "25 "   maxSpareThreads= "75 "
                              enableLookups= "false "   redirectPort= "8443 "   acceptCount= "100 "
                              debug= "0 "   connectionTimeout= "20000 "  
                              disableUploadTimeout= "true "     useBodyEncodingForURI= "true "  

URIEncoding= "UTF-8 "/>
        <Connector   port= "8009 "  
                              enableLookups= "false "   redirectPort= "443 "   debug= "0 "
                              protocol= "AJP/1.3 "   useBodyEncodingForURI= "true "   URIEncoding= "UTF-8 "/>

以上配置可以保证在8081下mneiyou任何问题。
但是AJP/1.3的8009下面我也配置useBodyEncodingForURI= "true "   URIEncoding= "UTF-8 "   了。

此外,还有个奇怪的现象:
  我尝试j将     <to   type= "forward "> /search/search.jsp?keys=$1 </to>
修改成   <to   type= "redirect "> /search/search.jsp?keys=$1 </to>   重定向的模式。
非常奇怪的现象出现了。当汉字是奇数时结果错误,偶数汉字时   正常。

控制台打印   取得的keys   汉字变成“周杰?”


------解决方案--------------------
先转化成utf-8,然后再转化成gb2312