Получить первый символ строки UTF-8

Я получаю строку UTF-8 из db и пытаюсь повторить ее первый символ:

$ title = $ model-> title; echo $ title [0];

Я получаю:

Что не так? Благодаря!

Вам нужно рассмотреть несколько вещей:

  1. Убедитесь, что данные в БД хранятся как UTF-8
  2. Убедитесь, что клиентское соединение с БД находится в UTF-8 (например, в mysql см.: http://www.php.net/manual/en/mysqli.character-set-name.php )
  3. Убедитесь, что на странице есть тип содержимого, такой как UTF-8 [вы можете использовать заголовок ('Content-Type: utf-8'); ]
  4. Попробуйте установить внутреннюю кодировку, используя mb_internal_encoding («UTF-8»);

НТН

 $first_char = mb_substr($title, 0, 1); 

Вам нужно использовать многобайтовые строковые функции PHP для правильной обработки строк Unicode:

http://www.php.net/manual/en/ref.mbstring.php

http://www.php.net/manual/en/function.mb-substr.php

Вам также необходимо указать кодировку символов в <head> вашего HTML:

 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

или:

 <meta http-equiv="Content-Type" content="text/html; charset=UTF-16" /> 

Как уже упоминалось в других вопросах, с PHP, при попытке получить подстроку, он не понимает многобайтовых символов (например, с UTF8).

В других ответах не упоминается, что вы должны намекать на кодировку, которую вы хотели бы использовать для mb_substr

Так, например, я использую это:

  mb_substr( "Sunday", 0, 1,'UTF8'); // Returns S mb_substr( "воскресенье", 0, 1,'UTF8'); // Returns в 

Строки PHP не понимают многобайтовые строки по умолчанию, такой массив, как индексирование, будет прерывать первый байт, и если это не будет в диапазоне ascii, вы получите этот результат.

Используйте метод mb_substr .