Question

Je suis tranchage chaîne unicode avec diacritiques en utilisant la fonction de mb_substr, mais il fonctionne comme j'utiliser la fonction substr simple. Il se divise en caractères unicode moitié affichage question diamant marquée.

par exemple.

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

Qu'est-ce qui pourrait être erroné?

Était-ce utile?

La solution

J'ai le même problème si je ne spécifie pas l'encodage comme le dernier paramètre mb_substr : valeur par défaut , au moins sur mon serveur, à ISO-8859-1.


Mais, si je mets le codage correctement, à UTF-8, il fonctionne OK:

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

Obtient l'écran de droite dans le navigateur:

ááááá


Voir mb_substr (citant, Souligné par l'auteur) :

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

Le paramètre est encoding   le codage des caractères. Si elle est   omis, le caractère interne   valeur de codage sera utilisé .

Autres conseils

J'ai eu le même problème et les réponses ci-dessus m'a aidé aussi. A côté de la mise en php.ini ou en utilisant ini_set() , il peut aussi aider à utiliser mb_internal_encoding('utf-8'); ( utf-8 peut être remplacé à votre choix) pour définir le codage permanent pour les fonctions multi-octets.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top