Frage

Ich Aufschneiden Unicode-String mit diakritischen Zeichen mb_substr Funktion, aber es funktioniert, wie ich einfach substr Funktion verwenden würde. Es spaltet Unicode-Zeichen in Hälfte Frage markiert Diamanten angezeigt wird.

z.

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

Was könnte falsch sein?

War es hilfreich?

Lösung

ich das gleiche Problem haben, wenn ich die Codierung als letzten Parameter nicht angeben, an mb_substr : es defaults zumindest auf meinem Server, auf ISO-8859-1.


Aber wenn ich die Kodierung richtig eingestellt ist, zu UTF-8, es funktioniert OK:

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

Ruft die richtige Anzeige im Browser:

ááááá


Siehe mb_substr (zitiert, Hervorhebung von mir) :

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

Der encoding Parameter ist   Die Zeichenkodierung. Wenn es   weggelassen wird, das interne Zeichen   Codieren Wert verwendet werden .

Andere Tipps

Ich hatte das gleiche Problem und die oben genannten Antworten halfen mir auch. Neben Einstellung php.ini oder mit ini_set() , es kann auch helfen, zu verwenden mb_internal_encoding('utf-8'); ( utf-8 kann nach Ihrer Wahl ersetzt werden) zur Einstellung permanent Codierung für Multibyte-Funktionen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top