Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie löse ich das Problem mit der MySQL-Zeichenkodierung?

Ein Problem mit der MySQL-Zeichencodierung liegt vor, wenn Ihre MySQL-Datenbank dazu führt, dass UTF8-Zeichen (wie å, ä und ö) falsch angezeigt werden. Dies liegt daran, dass MySQL standardmäßig den Zeichensatz latin1 verwendet. Dieses Problem ist heutzutage aufgrund der globalen Natur von Webinhalten wichtig geworden. Sie können es lösen, indem Sie die MySQL-Zeichenkodierung auf UTF8 setzen. Dies kann auf mehrere Arten erfolgen.

  1. Führen Sie zu Beginn jeder Verbindung eine Abfrage „SET NAMES ‚utf8‘“ aus – dies zwingt MySQL, UTF8 für die Lebensdauer dieser Verbindung zu verwenden. Dies ist eine gute Option, wenn Sie keinen Zugriff auf die Datei my.cnf (Linux/Mac) / my.ini (Windows) haben.
  2. Suchen und bearbeiten Sie die Datei my.cnf (Linux/Mac) / my.ini (Windows) auf Ihrem Datenbankserver. Fügen Sie die folgenden Zeilen zu mysqld hinzu section :[mysqld] default-character-set=utf8 skip-character-set-client-handshake Wenn Sie nun den MySQL-Server neu starten, sollte die MySQL-Zeichenkodierung standardmäßig auf UTF8 eingestellt sein
  3. Was ist, wenn Sie bereits eine Datenbank haben? Wie konvertiere ich den Inhalt in UTF8? Sie können die folgenden 3 Abfragen verwenden. Ersetzen Sie DATABASE_NAME, TABLE_NAME und FIELD_NAME durch Ihre Werte. Tabelle TABLE_NAME ändern FIELD_NAME-Blob ändern; Datenbank DATABASE_NAME ändern charset=utf8; Tabelle TABLE_NAME ändern FIELD_NAME ändern varchar (255) Zeichensatz utf8; Konvertieren Sie das Feld in BLOB, das ist ein binärer Feldtyp. Dann ändern wir den Zeichensatz der Datenbank auf utf8. Schließlich wandeln wir unser Feld wieder in Text oder Varchar um.

Sie können Ihre MySQL-Zeichencodierung mit der folgenden Abfrage überprüfen.

Standard-MySQL-Zeichenkodierung

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | latin1                     |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

Erforderliche MySQL-Zeichenkodierung

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| 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                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

Sie müssen auch sicherstellen, dass Ihr Programmier-Framework wie Django, Code Igniter usw. die UTF8-Codierung verwendet.