php > $s="你好";
php > echo mb_strlen($s,"utf8");
2
utf8返回2,我理解
php > echo mb_strlen($s,"gb2312");
php > echo mb_strlen($s,"gb2312");
php4
這裡返回4,我也理解
php > echo mb_strlen($s,"gbk");
3
php > $s="你好";
php > echo mb_strlen($s,"utf8");
2
utf8返回2,我理解
php > echo mb_strlen($s,"gb2312");
php > echo mb_strlen($s,"gb2312");
php4
這裡返回4,我也理解
php > echo mb_strlen($s,"gbk");
這裡我就不懂了?
因為$s是UTF8編碼,你沒有轉成GBK就透過GBK的編碼取得它的長度。
UTF8編碼的你好
在GBK上是
,所以它的長度是3呀。
應該要這麼乾:
<code>$a = mb_strlen(iconv( 'utf-8','gbk', $s), 'gbk'); $b = mb_strlen(iconv( 'utf-8','gb2312', $s), 'gb2312'); </code>
也就是,GB2312也是錯的。
mb_strlen 是回傳字元數,所以只有回傳2才是正確的,4、3這兩種情況我不知道你是怎麼理解的?
不過$s = "你好"
的時候,