看了很多方法,因為伺服器環境的不同,所以解決方式也不同
在WINDOWS+APACHE的環境下,依照下列方法可以解決TAG字符問題
環境為:WINDOWS+APACHE(PHP5)+SS5.5.2/XS3.0.2(BIG5)
修改PHP.INI
mbstring.language = Traditional Chinese
mbstring.internal_encoding = BIG5
mbstring.http_input = BIG5
mbstring.http_output = BIG5
mbstring.encoding_translation = On
mbstring.detect_order = BIG5
mbstring.substitute_character = BIG5,ISO-8859-1;
mbstring.func_overload = 2
但是按照以上修改完後,卻發生無法登入的問題
但將 mbstring.internal_encoding = BIG5 改為 mbstring.internal_encoding = ISO-8859-1
或將 mbstring.func_overload = 2 改為 mbstring.func_overload = 0
就可以正常登入,但是TAG卻又無法正常轉換字符了
設置 mbstring.func_overload 的目的是:
將 strtolower()函數轉為 mb_strtolower()函數
mb_strtolower()函數可透過 mbstring.internal_encoding 的設置來確保輸出轉換字符為BIG5
我是以茄子提供的代碼測試的,在還未設置mbstring之前,big5的環境下卻發生字符無法正確轉換,且確定可使用strtolower函數
在設置完mbstring之後,就可正常轉換了
- <?php
- echo strtolower("中華人民共和國");
- phpinfo();
- ?>
复制代码
在這之前,我也試過將 setlocale(LC_ALL,"zh_TW"); 加到 ss 之 config.php 的 ?> 前,但問題還是一樣,無法正確識別字符
P.S:若可以幫我將所有關於TAG程序文件,有使用到 strtolower()函數,將其全部換成 mb_strtolower()函數,那就省事多了,謝謝
這還需官方來做修改,因為部分重要程序文件都已ZEND
還有!~在設置完mbstring,於相同環境下discuz bbs可正常登入,但是只要開啟ss頁面,bbs的cookie會被ss洗掉
我想應該是設置了 mbstring.func_overload 的關係,因為substr() 函數會被轉換成 mb_substr()函數,這兩函數間有差異,所以會發生無法登入的情況
希望茄子可以幫忙解決,謝謝
[ 本帖最后由 hks888 于 2007-7-25 03:40 编辑 ] |