Domanda

Ho provato:

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

entrambi generano 9, mentre in realtà ci sono solo 3 caratteri.

Qual è il modo giusto di contare i personaggi?

È stato utile?

Soluzione

dovresti assicurarti di specificare la codifica nel secondo parametro

es

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

consulta il manuale

Altri suggerimenti

Se non hai accesso all'estensione della stringa mb, anche questo funziona (e credo che sia più veloce):

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

Un carattere cinese non è uguale a un carattere ASCII. mb_strlen è il modo giusto per contare i caratteri multibyte se la stringa è codificata UTF-8.

vedi qui: http://www.herongyang.com/PHP-Chinese/ multibyte-UTF-8-mb_strlen.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top