Вопрос

Я разделяю строку Unicode диакритическими знаками, используя mb_substr функция, но она работает так, как я бы использовал simple substr функция.Он разделяет символы Юникода пополам, отображая вопрос, помеченный ромбом.

Например.

echo mb_substr('ááááá', 0, 5); //Displays áá�

Что может быть не так?

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

Решение

У меня такая же проблема, если я не укажу кодировку в качестве последнего параметра для mb_substr :по умолчанию, по крайней мере на моем сервере, ISO-8859-1.


Но, если я правильно настрою кодировку, на UTF-8, все работает нормально :

echo mb_substr('ááááá', 0, 5, 'UTF-8');

Получает правильное отображение в браузере :

ááááá


Видишь mb_substr (цитирую, курсив мой) :

string mb_substr  ( string $str  , int $start  [, 
    int $length  [, string $encoding  ]] )

Тот самый encoding параметром является кодировка символа. Если он опущен, будет использоваться внутренний символ значение кодировки.

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

У меня была та же проблема, и приведенные выше ответы мне тоже помогли.Помимо настройки php.ini или используя ini_set(), это также может помочь использовать mb_internal_encoding('utf-8'); (utf-8 может быть заменен по вашему выбору) для установки постоянной кодировки для многобайтовых функций.

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