Pregunta

Estoy SLICING cadena Unicode con diacríticos utilizando la función mb_substr pero funciona como me gustaría utilizar la función substr sencilla. Se divide caracteres Unicode en la mitad mostrando pregunta marcada diamante.

por ejemplo.

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

¿Qué podría estar mal?

¿Fue útil?

Solución

Tengo el mismo problema si no se especifica la codificación como el último parámetro a mb_substr : por defecto , al menos en mi servidor, a ISO-8859-1.


Pero, si fijo la codificación adecuada, a UTF-8, funciona bien:

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

Obtiene la pantalla derecha en el navegador:

ááááá


Ver mb_substr (citando, el énfasis es mío)

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

El parámetro encoding es   la codificación de caracteres. Si se trata de   omitido, el carácter interno   se utilizará valor de codificación .

Otros consejos

Yo tenía el mismo problema y las respuestas anteriores me ayudó también. Junto a establecer php.ini o usar ini_set() , sino que también puede ayudar el uso de mb_internal_encoding('utf-8'); ( utf-8 se puede reemplazar a su elección) para el establecimiento de codificación permanente para las funciones de varios bytes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top