Problem mit diakritischen Zeichen und mb_substr
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?
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.