我有以下代碼:爲什麼PHP 5.4中的mb_convert_case會破壞我的字符串,而在5.2版本中呢?
header('Content-type: text/html; charset=utf-8');
$str = 'áá áá';
echo $str."\n";
echo mb_convert_case($str, MB_CASE_TITLE)."\n";
echo bin2hex($str)."\n";
echo bin2hex(mb_convert_case($str, MB_CASE_TITLE))."\n";
使用PHP 5.2.2,我得到下面的輸出:
áá áá
áá áá
c3a1c3a120c3a1c3a1
c3a1c3a120c3a1c3a1
使用PHP 5.4.3,我得到這個:
áá áá
á� á�
c3a1c3a120c3a1c3a1
c3a1e3a120c3a1e3a1
我在這兩種情況下的預期產量將是:
áá áá
Áá Áá
c3a1c3a120c3a1c3a1
c381c3a120c381c3a1
所以我有兩個問題:
- 爲什麼沒有一個正在轉換爲?
- 爲什麼PHP 5.4會破壞我的字符串?
不能專門回答你的問題,但也可以嘗試明確地將'$ encoding'參數傳遞給'mb_convert_case'。 – deceze
我建議以及@deceze評論。添加顯式編碼參數。還要檢查您的默認編碼爲mb字符串。哪個編碼是文件? – hakre