ISAPI_Rewrite3.x中国語の文字化けし解決方法


今は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するのは間違いない.
最後の文のルールにNUパラメータを追加します.RewriteRule^(.*)$index.php?$1 [QSA,NU,PT,L]
構成例:
転送されたURLアドレス:
http://www.111cn.net /sell/search-htm-kw-%C6%BD%B0%E5%B5%E7%C4%D4.html
 RewriteRule :
RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
 :
RewriteRule ^(.*)-htm-(.*)$ $1.php?$2 [NU]

shopexの元のルールは:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} .(html|xml|json|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|cgi|shtml|shtm|phtm|xml)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]

変更されたルールは次のとおりです.
RewriteBase /
RewriteCond %{REQUEST_FILENAME} .(html|xml|json|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|cgi|shtml|shtm|phtm|xml)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [NU,L]

http://www.111cn.net/wy/CMS/42230.htm