Holen Sie sich erste Zeichen von UTF-8-string
Bekomme ich eine UTF-8-string aus der db, und zu versuchen, echo seine erste Charakter:
$Titel = $model->Titel;
echo $Titel[0];
Bekomme ich: �
Was ist falsch?
Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Dinge, die Sie beachten sollten:
hth
mb_internal_encoding
$title[0]
. @PaulS sagte: "Sie sollten mitmb_substr
", aber kann jemand bestätigen, dass Sie muss verwendenmb_substr
? Und wenn dem so ist, sollten wir nicht Bearbeiten diese akzeptierte Antwort hinzufügen, um diesen entscheidenden Punkt?Müssen Sie sich unter Verwendung der PHP multibyte-string-Funktionen richtig zu handhaben, Unicode-strings:
http://www.php.net/manual/en/ref.mbstring.php
http://www.php.net/manual/en/function.mb-substr.php
Werden Sie auch brauchen, um die Zeichenkodierung anzugeben, die in der
<head>
Ihres HTML-Codes:oder:
li_directory
(id
int(10) unsigned not NULL AUTO_INCREMENT,title
varchar(128) DEFAULT NULL,text
longtextexamples
texttime
int(10) unsigned DEFAULT NULL, PRIMARY KEY (id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;$title
.li_directory
(id
,title
,text
,examples
,time
) VALUES (1, 'Акраверш', ", 1321708954),$title="Акраверш"; echo mb_substr($title, 0, 1,'UTF-16');
mb_internal_encoding
gibt.Wie bereits erwähnt in anderen Fragen, mit PHP, die Sie beim Versuch erhalten eine Teilfolge, die Sie nicht versteht multibyte-Zeichen (Zeichen, die Sie mit UTF-8 zum Beispiel).
Was die anderen Antworten gar nicht erwähnen, ist, dass Sie sollten Hinweis der Codierung, die Sie verwenden möchten, für die mb_substr
So, ich zum Beispiel verwende diese:
mb_internal_encoding
gibt.PHP strings nicht verstehen multibyte-Zeichenfolgen wird standardmäßig die array-wie die Indexierung hacken des ersten byte und wenn das geschehen nicht in den ascii-Bereich, erhalten Sie dieses Ergebnis.
Verwenden mb_substr Methode.