我有以下代码:
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";
Run Code Online (Sandbox Code Playgroud)
使用PHP 5.2.2,我得到以下输出:
áá áá
áá áá
c3a1c3a120c3a1c3a1
c3a1c3a120c3a1c3a1
Run Code Online (Sandbox Code Playgroud)
使用PHP 5.4.3,我得到这个:
áá áá
á? á?
c3a1c3a120c3a1c3a1
c3a1e3a120c3a1e3a1
Run Code Online (Sandbox Code Playgroud)
我在两种情况下的预期产出都是:
áá áá
Áá Áá
c3a1c3a120c3a1c3a1
c381c3a120c381c3a1
Run Code Online (Sandbox Code Playgroud)
所以我有两个问题:
传入$encoding
每个mb_
函数调用,或设置:
mb_internal_encoding("UTF-8");
Run Code Online (Sandbox Code Playgroud)
确保PHP知道您正在使用的编码.否则编码来自php.ini
,或者如果不包括默认的ISO-8859-1.
因此,您的5.4安装默认为ISO-8859-1,因此降低了UTF-8序列的前导字节,打破了它.同样的情况,我在5.2,所以也许有其他关于您的安装5.2东西是不同的-也许internal_encoding
在ini
被设置到别的东西,而不在那些字节位置的信吗?
归档时间: |
|
查看次数: |
1767 次 |
最近记录: |