ISAPI_Rewrite 3.1 中文URL乱码怎么解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ISAPI_Rewrite 3.1 中文URL乱码怎么解决?相关的知识,希望对你有一定的参考价值。

参考技术A 以前在用
ISAPI_Rewrite
1.3
版的时候
只要对URL进行
UrlEncode
处理。就可以正常接收到中文.
但是现在换为
3.1版以后
GB2342
的接收页面就是乱码了。
现在换用了
ISAPI_Rewrite
3.x
发现编码后的字符会变成乱码,如果直接使用中文不编码,则会被格式化为GBK字符串。
因为
ISAPI_Rewrite
默认是以
UTF-8
的编码接收的。
解决方案是
翻了手册,发现有一个配置参数可以解决该问题:
nounicode|NU
If
NU
flag
is
set,
transformation
from
Unicode
to
UTF-8
will
not
take
place
and
all
Unicode
characters
remain
encoded
in
%xx
format.
nounicode|NU
如果标志设置,从Unicode转换为UTF-8不会发生,所有的Unicode字符编码为%xx的保持格式
在你的RewriteRule
规则后台添加
NU
即可恢复正常。
关于ISAPI_Rewrite中文变乱码解决方法,无论何种情况,统一解决思想:
1、在传输URL时,将中文进行urlencode,这样是没错的。
2、如果是ISAPI_Rewrite
3.x
只需添加
NU
参数即可。
配置举例:
传递的URL地址:
http://tech.cncms.com/search-%C6%BB%B9%FB.html
相应的RewriteRule:
RewriteRule
^/search-(.*)\.html$
/search\.do\?keyword=$1
[QSA,NU,PT,L]
最后,
无论使用哪家的产品,多看看产品手册是没错的,一般问题与使用方法在手册中都有完整的讲解。比如这次的
ISAPI_Rewrite
就是一个很好的说明。

老项目 Get方式 URL传值时中文乱码解决办法

1.说白了其实就是因为get方式请求,若url含非西欧编码必然会乱码,处理方式:request.setCharacterEncoding(“utf-8”);
将请求参数使用ISO-8859-1分解成字节数组,再将字节数组解码成字符串


通过ISO修改然后替换成utf8就行

String name = new String(request.getParameter("xxx").getBytes("ISO-8859-1"),"utf-8");

以上是关于ISAPI_Rewrite 3.1 中文URL乱码怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章

解决获取url上中文乱码问题

url 乱码

url编码中文乱码问题怎么解决

url传参数出现中文乱码,怎么解决?

windows2003 IIS6下安装ISAPI_Rewrite3破解版

JavaWebHttp get请求乱码post请求乱码,html页面乱码jsp页面乱码,控制台tomcat日志乱码原因分析和解决方案参考: