2011-04-22 27 views
6

爲什麼以下語句3的輸出不是1?(鉑)字符串函數和php中的UTF8

echo mb_strlen("鉑"); 

事情是

echo "鉑"; 

將正常輸出這個標誌被編碼爲UTF-8。

+1

只是一個想法,但我想你已經試過'mb_strlen( '鉑', 'UTF-8');'? – 2011-04-22 22:04:12

回答

13

確保您設置適當的內部編碼:

<?php 
echo mb_internal_encoding() . '<br />'; 

echo mb_strlen('鉑', 'utf-8') . '<br />'; 
echo mb_strlen('鉑') . '<br />'; 

mb_internal_encoding('utf-8'); 
echo mb_internal_encoding() . '<br />'; 
echo mb_strlen('鉑') . '<br />'; 

// ISO-8859-1 
// 1 
// 3 
// UTF-8 
// 1 
3

你likeliy需要添加字符集:

echo mb_strlen("鉑","utf-8"); 
+0

就像middaparka建議;) – Erik 2011-04-22 22:05:15

3

將編碼設置爲您mb_strlen功能:

echo mb_strlen("鉑", "UTF-8");