PHP: die kyrillischen Zeichen nicht korrekt angezeigt
Kürzlich wechselte ich hosting von einem Anbieter zum anderen und ich habe Probleme mit der Darstellung von kyrillischen Zeichen. Die Zeichen, die aus der Datenbank gelesen werden richtig angezeigt, aber die Zeichen sind hardcoded in der php-Datei nicht (Sie werden als Fragezeichen angezeigt).
Den Dateien, die enthalten die php-source-code in utf-8 gesichert form. Niemand helfen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, eine meta-tag-Angabe der Zeichencodierung in den head-Abschnitt:
Meine PHP-Modul wurde genau mit denselben problem, die ganze text war wie "?????????????????"
Und mein code wurde geschrieben mit Notepad++. Ich fand die Lösung für das problem. Das problem war nicht in den header charset oder einem meta-tag, weil der browser eigentlich weiß, dass es UTF-8-Zeichensatz. Ich habe versucht, alle Kodierungen aus dem browser und das Ergebnis war das gleiche also ich kannte das problem ist irgendwo anders, nicht im browser die Zeichenkodierung auf alle.
Habe ich gerade eröffnet das PHP-Modul mit Notepad++ und alle ausgewählten code. Danach in das Menü Codierung wählte ich "konvertiere zu UTF-8." Nach dem hochladen auf den server, funktioniert alles wie ein Charme.
setzen Sie diese nach dem verbinden der Datenbank:
für mysqli
und in den header der Seite:
Scheint das problem ziemlich seltsam ist.
Was die form dieser Fragezeichen? Ist es schwarzen Diamanten mit Fragen oder einfach nur Fragezeichen?
Zunächst überprüfen, ob Ihre Dateien sind wirklich
utf-8
codiert.Versuchen Sie, fügen Sie diesen header, um Ihren code (vor allem Leistung)
Aber ich bezweifle, dass es helfen würde, wie Ihre Datenbank-text sieht schon gut aus.
Haben Sie
SET NAMES
Abfragen in deinem code? Wascharset
es eingestellt ist?Es hatte etwas zu tun mit der Kodierung der php-Dateien. Die Dateien wurden erstellt mit Windows Notepad und speichern mit utf-8-Codierung.
Wenn ich Notepad2, die Dateien zu öffnen, die Kodierung der Dateien war "utf-8 mit Signatur". Wenn ich änderte die Codierung auf "utf-8", wird der text korrekt angezeigt.
Den Grund für Ihr problem ist oft bei unbeabsichtigter re-encoding der Skript-Dateien, die von einem Programmierer-editor. Es ist nicht eine gute Praxis, fest-strings, die verlassen sich auf die Codierung, die in Ihre php-Dateien.
Schalten Sie Ihre browser-Codierung zu finden, welche Kodierung verwendet wird, für hartcodierten text, es könnte Ihnen helfen, das Problem anzugehen. Auch stellen Sie sicher, senden korrekten http-Header für jede Seite:
Optional können Sie meta-Tags in Ihr HTML:
Für mich, die Linie, die den Unterschied gemacht ist die folgende:
Direkt aus der In der PHP-Dokumentation Seite.
Server wurde wieder Latein, nach Einstellung des charset auf utf8 funktioniert jetzt einwandfrei.
Ich Kämpfe mit genau dem gleichen problem, da ich versuche, fügen Sie ein wenig Französisch/Deutsch Internationalisierung, um ein paar Steuerelemente auf einem widget.
Zeichen mit Akzenten, die gespeichert sind in meine db Druck feiner als UTF-8. Allerdings werden die Zeichen, die sind hardcoded in arrays in PHP-Dateien entweder als Schwarzes Karo mit Fragezeichen in oder in der kleinen quadratischen box.
Ich habe versucht, die Codierung/Decodierung der die Saiten von meiner php-Datei in alle Richtungen, aber konnte nicht die Zeichen korrekt angezeigt werden.
Da ich eine solche endliche Menge von Zeichen, und arbeite ausschließlich mit HTML, habe ich nur noch ein bisschen an Funktionalität für meine intl-Klasse zu ersetzen, die dem Zeichen für html-Entitäten.
Habe ich diese Eigenschaften.
Richte ich einige meiner Ersatz-arrays in meinem Konstruktor...
Dann, wenn ich eine meiner Saiten in meiner Klasse, die ich gerade zurück wie so...
Es ist eine völlig ghetto-Lösung... aber für jetzt, es funktioniert. Ich würde auf jeden Fall zu hören, wie der richtige Weg, um Akzente/Sonderzeichen, die sind hardcoded in einer PHP-Datei.