Heim  >  Artikel  >  Backend-Entwicklung  >  Lösen Sie das verstümmelte Problem des PHP-Zugriffs auf MySQL 4.1

Lösen Sie das verstümmelte Problem des PHP-Zugriffs auf MySQL 4.1

黄舟
黄舟Original
2016-12-21 10:08:471366Durchsuche

Die ab MySQL 4.1 eingeführte Mehrsprachenunterstützung ist wirklich großartig und einige Funktionen haben andere Datenbanksysteme übertroffen. Während des Tests habe ich jedoch festgestellt, dass die Verwendung von PHP-Anweisungen, die für MySQL vor 4.1 geeignet sind, zum Betreiben der MySQL-Datenbank zu verstümmelten Zeichen führt, selbst wenn der Tabellenzeichensatz festgelegt ist.

Die Zeichensatzunterstützung (Character Set Support) von MySQL 4.1 umfasst zwei Aspekte: Zeichensatz (Zeichensatz) und Sortiermethode (Sortierung). Die Unterstützung für Zeichensätze wurde auf vier Ebenen verfeinert: Server, Datenbank, Tabelle und Verbindung.

Um den Systemzeichensatz und die Sortiereinstellungen anzuzeigen, können Sie die folgenden zwei Befehle verwenden:

mysql> SHOW VARIABLES LIKE 'character_set_%';

+-- - ---------+------------------------- - --+

|. Variablenname |.

+-----------+- - -----------+

| latin1 |

| |.

|. latin1 |

| > |. Character_sets_dir |. /usr/share/mysql/charsets/ |

+------------ - ---------+

7 Zeilen im Satz (0,00 Sek.)

MYSQL> 'collation_%';

+----------------------+-------------- - ----+

|. Variablenname |.

+-------+--- - --------------+

|. latin1_swedish_ci |. latin1_swedish_ci | 🎜>

+---------------------+-------------------+

3 Zeilen im Satz (0,00 Sek.)

 Die oben aufgeführten Werte sind die Systemstandardwerte. (Es ist seltsam, wie das System standardmäßig die schwedische Sortiermethode „latin1“ verwendet.)

Wenn wir über PHP auf die ursprüngliche Weise auf die MySQL-Datenbank zugreifen, auch wenn der Standardzeichensatz der Tabelle auf utf8 und UTF eingestellt ist -8 Codieren und senden Sie die Abfrage. Sie werden feststellen, dass die in der Datenbank gespeicherten Daten immer noch verstümmelt sind. Das Problem liegt in dieser Verbindungsschicht. Die Lösung besteht darin, vor dem Senden der Abfrage den folgenden Satz auszuführen:

SET NAMES 'utf8';

Dies entspricht den folgenden drei Anweisungen:

SET Character_set_client = utf8 ;

SET Character_set_results = utf8;

SET Character_set_connection = utf8;

Versuchen Sie es erneut und es wird normal sein.

Das Obige ist der Inhalt zur Lösung des verstümmelten Problems des PHP-Zugriffs auf MySQL 4.1. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn