2011-04-22 5 views
6

왜 다음 문장의 출력은 1이 아닌 3입니까?(鉑) 문자열 함수와 PHP의 UTF8

echo mb_strlen("鉑"); 

것입니다 그

echo "鉑"; 

것 UTF-8 인코딩이 정상적으로 출력 부호.

+1

그냥 생각,하지만 난 ('鉑', 'UTF-8')은'mb_strlen 시도했습니다 가정,'? –

답변

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

3

당신의 mb_strlen 함수에 대한 인코딩 설정을 : 당신이 다음을 수행하는 경우

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

, 올바른 답을 얻을 것이다

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

나는 PHP가 3의 답을내는 ASCII로 기본 설정되어 있다고 생각합니다. 왜 그리고 어떻게 작동하는지 관심이있는 사람들을 위해 엔코 드에 대한 기사를 썼습니다. http://www.joelonsoftware.com/articles/Unicode.html

관련 문제