2011-04-22 18 views
6

¿Por qué es el resultado de la siguiente instrucción 3 y no 1?(鉑) funciones de cadena y UTF8 en php

echo mb_strlen("鉑"); 

cosa es que

echo "鉑"; 

voluntad correctamente la salida de esta señal que se codifica como UTF-8.

+1

Es sólo una idea, pero supongo que usted ha intentado 'mb_strlen ('鉑', 'UTF-8');'? –

Respuesta

13

asegúrese de configurar la codificación interna adecuada:

<?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

Usted likeliy que añadir el juego de caracteres:

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

Al igual que middaparka sugiere;) – Erik

3

Establecimiento de la codificación a su función mb_strlen:

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

Si lo hace lo siguiente, obtendrá la respuesta correcta

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

Supongo que php está por defecto en ASCII, que produce una respuesta de 3. También encontré una muy en artículo interesante sobre Codificación para cualquier persona interesada en por qué y cómo funciona. http://www.joelonsoftware.com/articles/Unicode.html