Pergunta

Eu tentei:

mb_strlen('普通话');
strlen('普通话');

ambos de saída 9, quando na verdade existem apenas 3 personagens.

O que é o caminho certo para contar caracteres?

Foi útil?

Solução

Você deve certificar-se de especificar a codificação no segundo parâmetro

ie

mb_strlen('普通话', 'UTF-8');

manual do

Outras dicas

Se você não tiver acesso à extensão corda mb isso também funciona (e eu acredito que é mais rápido):

strlen(utf8_decode('普通话')); // 3

Um caractere chinês não é igual a um caractere ascii. mb_strlen é o caminho certo para contar caracteres multi-byte, se a corda no UTF-8 codificado.

veja aqui: http://www.herongyang.com/PHP-Chinese/ multibyte UTF-8-mb_strlen.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top