Как получить точное количество многобайтовых символов?

StackOverflow https://stackoverflow.com/questions/1436550

  •  07-07-2019
  •  | 
  •  

Вопрос

Я пытался:

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

оба они выводят 9 символов, в то время как на самом деле в них всего 3 символа.

Как правильно подсчитывать символы?

Это было полезно?

Решение

вы должны обязательно указать кодировку во втором параметре

т. е.

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

смотрите на руководство пользователя

Другие советы

Если у вас нет доступа к расширению строки mb, это также работает (и я считаю, что это быстрее):

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

Один китайский символ не равен одному символу ascii. mb_strlen - это правильный способ подсчета многобайтовых символов, если строка в кодировке UTF-8.

смотрите здесь: http://www.herongyang.com/PHP-Chinese/ Многобайтные-UTF-8 mb_strlen.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top