Come ottenere il numero esatto di caratteri multibyte?
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?
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