PHP MySQL mit Latin1(iso-8859-1) trotz UTF-8-Einstellungen
Wieder einmal habe ich eine seltsame und komplizierte problem.
Arbeite ich mit der Umstellung meiner MySQL-Datenbanken (und alles andere auf meinem server für diese Angelegenheit) auf UTF-8 zu vermeiden, um text zu konvertieren, wenn immer und setzen den text in den verschiedenen Datenbanken.
Ich glaube, ich habe teilweise gelungen, weil SHOW VARIABLES LIKE 'character_set%'
gibt:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
Aber noch mysql_client_encoding($con);
zurück latin1
und in der Ausgabe alle Sonderzeichen ersetzt, mit �. Mein Fazit ist, dass der client oder der Verbindung zwischen PHP und die MySQL-Datenbank mit latin1, obwohl ich schon immer die Angabe von utf-8 in der Dokument-header und in meinem.ini mit dem folgenden code:
character-set-server = utf8
character-set-client = utf8
default-character-set = utf8
edit: ich habe die obigen Einstellungen unter [client], [mysqld] und [mysql]
Wenn ich mysql_query('SET NAMES utf8;');
oder mysql_set_charset("utf8");
dem text zeigt richtig, aber für mich ist das nicht ein sollution, nur eine temporäre Lösung.
Weiß jemand, wie man Kraft PHP (oder was auch immer es ist-Rückkehr in latin1) verwenden utf-8?
Sollte ich erwähnen, dass ich mit Windows 2003 Server und Apache 2.
- Ich sollte darauf hinweisen, dass die
mysql_xxx()
Funktionen sind als veraltet und sollte nicht mehr verwendet werden. Das PHP-Handbuch empfiehlt, entweder den Gegenwertmysqli_xx()
Funktionen oder die PDO-Bibliothek statt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würden Sie noch haben, um sicherzustellen, dass die Ziel-Datenbank (oder system) - setup verwenden standardmäßig UTF-8 - und die Bibliothek, die Sie verwenden, eine Verbindung zu herstellen ist mit dem richtigen Zeichensatz. Nur weil die Daten in UTF-8 macht es nicht universell einsetzbar.
Dies ist die richtige Lösung. Seit Ihrer Verbindung die Kodierung bestimmt, wie die Daten empfangen, die von Ihrem Kunden (in diesem Fall PHP).
Um es als Standard; Sie müssen konfigurieren von MySQL entsprechend und dann den server neu starten:
Beachten Sie, dass dies wirkt sich auf alle Kunden auch die Befehlszeile
mysql
client.To set it as default; you need to configure MySQL appropriately and then restart the server.
Ich das Gefühl, ich habe diesen Schritt bereits absolviert. Meinst du, dass die NAMEN, ist die einzige andere Weg, es zu tun? Es fühlt sich an wie es sollte eine einfachere Möglichkeit als die Verwendung von NAMEN jedes mal, wenn ich zu Holen, etwas aus der Datenbank.[client]
Abschnitt. Ich habe aktualisiert die Frage mit der Konfigurations-Variablen, die Sie benötigen, aus der charset-Konfiguration-Seite aus der Anleitung.