2012年3月4日 星期日

ISAPI_Rewrite 3.1 中文URL亂碼的解決方案


以前在用 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 就是一個很好的說明。

沒有留言:

張貼留言