utf8_encode nicht produzieren richtige Ergebnis
Mein problem ist Folgendes:
Speicher ich ein array, das hat Tasten wie "e", "f", etc. Irgendwann, habe ich, um den Wert des Schlüssels. Dies funktioniert sehr gut. Aber wenn ich Sie speichern möchten, "í", "é", etc. als der Schlüssel, wird es nicht produzieren, das Ergebnis (Ergebnisse in �). Meine Seite ist in UTF-8. Die Suche des Problems fand ich heraus, dass utf8_encode sollte helfen mein problem. Es hat nicht: obwohl es produziert mehr lesbaren Zeichen, es noch völlig unterschieden von dem, was ich will. Wenn wichtig, phpinfo gibt:
Directive Local Value Master Value
iconv.input_encoding ISO-8859-1 ISO-8859-1
iconv.internal_encoding ISO-8859-1 ISO-8859-1
iconv.output_encoding ISO-8859-1 ISO-8859-1
Was könnte helfen das problem?
Bearbeiten: ich denke, dass die array-keys machen, einige Daten verloren gehen. Ist es wahr? Wenn ja, wie verhindern?
Edit2: Lösungen, die ich bisher ausprobiert habe: Holen Sie sich die array Schlüssel-Wert - ausgefallen; ein array mit den entsprechenden Tasten, werden aber Werte von utf-8-Zeichen: fehlgeschlagen; utf8_encode fehlgeschlagen; [versucht mit beiden] iconv_set_encoding: fehlgeschlagen; ini_set fehlgeschlagen; mb_internal_encoding gescheitert. Alle zurückgegeben, die entweder mit oder à �.
ISO-8859-1
codiert entsprechend dieser Einstellungen. Das ist völlig unabhängig von utf8_encode
. Überprüfen Sie mit Ihrem browser die Codierung gilt.Ja, der Ausgang scheint ISO-8859-1 irgendwie. Wie kann ich das beheben, ohne Bearbeitung php.ini?
Gesendet, ein header, der signalisiert, dass. Deaktivieren Sie die "iconv" - Ausgabe-Kodierung, als auch, wenn Sie nicht wissen, was das ist, brauchst du den gar nicht. Überprüfen Sie die PHP-Anleitung, wie man das ändern kann zur Laufzeit. Viel Glück!
Ich habe das senden der header. Das problem war, dass der browser interpretiert die ISO-8859-1 UTF-8. Ich konnte nicht herausfinden, wie zu deaktivieren Sie die iconv-Laufzeit. 🙁
Nein, die Tasten strings (naja, oder numerischen Typen). PHP-strings sind byte-arrays und haben keine zugeordneten Codierung. Das ändert sich nicht, wenn Sie als array-Schlüssel. Wenn der string in UTF-8 kodiert, der Schlüssel ist UTF-8 kodiert.
InformationsquelleAutor axiomer | 2012-02-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe zusammen einige Lösungen und schließlich es funktioniert.
Was ich getan habe, ist die folgende:
Zunächst, ich habe alle Lösungen mit dem hinzufügen dieser Zeile:
Funktionierte dies nicht.
Ich schaute alle links, die utf8_encode - utf8_decode Methode hat nicht funktioniert. Dann nahm ich einen Blick auf die Funktionen, fand ich die mbstring, und so steckte ich jede string-Funktion mit seiner mbstring entspricht.
Dies funktionierte gut. Dann habe ich herausgefunden, dass
mb_internal_encoding("UTF-8");
ist genug. So, jetzt funktioniert es. Vielen Dank für alle Vorschläge!Wie es scheint, ja. Der interessante Teil ist, dass Sie vorher nicht zerstören. Vielleicht, weil dieser nicht auf localhost, sondern auf einem anderen server.
Lesen lohnt sich: kunststube.net/encoding (gut Abschnitt, PHP, plus, Folgen Sie dem link zu Joel ' s Artikel zu).
Ich habe schon gelesen das dies auch das problem war, dass ich dachte, dass PHP-Funktionen Unterstützung von UTF8 (und nur ein Kopf ist genug), während Sie es tut, nur mit mbstring. (Oder eigentlich ist diese version & config die ich verwende.)
Dann sind Sie wirklich nicht, Lesen Sie meinen Artikel gründlich genug. 😛
InformationsquelleAutor axiomer
Versuchen, durch das hinzufügen dieser Zeile an den Anfang aller Scripte, die sich befassen werden mit UTF-8-Daten:
mb_internal_encoding("UTF-8");
oder noch besser, editieren Sie die interne Codierung in php.ini-Datei.
InformationsquelleAutor Daan
Versuchen Sie, die default_charset Richtlinie:
Dieser legt die Zeichenkodierung, die an den browser gesendet wird in der
Content-Type
header.InformationsquelleAutor cmbuckley