Obtenha o primeiro personagem da string UTF-8

Eu recebo uma string UTF-8 de db, e tentando ecoar seu primeiro personagem:

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

Eu recebo:

O que está errado? Obrigado!

Há várias coisas que você precisa considerar:

  1. Verifique se os dados no database estão sendo armazenados como UTF-8
  2. Verifique se a conexão do cliente com o DB está em UTF-8 (por exemplo, no mysql veja: http://www.php.net/manual/en/mysqli.character-set-name.php )
  3. Certifique-se de que a página tenha seu tipo de conteúdo definido como UTF-8 [você pode usar o header (‘Content-Type: utf-8’); ]
  4. Tente configurar a codificação interna, usando mb_internal_encoding (“UTF-8”);

hth

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

Você precisa usar as funções de string multibyte do PHP para lidar adequadamente com as strings Unicode:

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

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

Você também precisará especificar a codificação de caracteres no do seu HTML:

  

ou:

  

Como mencionado anteriormente em outras questões, com PHP, ao tentar obter uma substring, não entende caracteres multibyte (como você obtém com o UTF8, por exemplo).

O que as outras respostas não mencionam é que você deve sugerir a codificação que você gostaria de usar para o mb_substr

Então, por exemplo, eu uso isso:

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

As strings do PHP não entendem as cadeias multibyte por padrão, a matriz como indexação irá cortar o primeiro byte e, se isso não acontecer na faixa ascii, você obtém esse resultado.

Use o método mb_substr .