UTF-8-Kodierung ist derzeit das am weitesten verbreitete Zeichenkodierungsformat, und MySQL kann auch die Verwendung der UTF-8-Kodierung zum Speichern von Daten unterstützen. Wenn Sie jedoch MySQL zum Speichern von UTF-8-codierten Daten verwenden, können verstümmelte Zeichen auftreten. In diesem Artikel werden die Gründe und Lösungen für das Auftreten verstümmelter UTF-8-Kodierungszeichen in MySQL vorgestellt.
Aus historischen Gründen verwendet MySQL standardmäßig das Codierungsformat Latin1 (ISO-8859-1). Dieses Kodierungsformat ist für die meisten westlichen Sprachen geeignet. Für Sprachen wie asiatische Sprachen und Sprachen des Nahen Ostens, die komplexe Zeichensätze verwenden, scheint dies jedoch unzureichend zu sein.
Mit der Entwicklung der Internettechnologie verwenden immer mehr Länder und Regionen nicht-lateinische Zeichensätze für die Textkommunikation. Um dieses Problem zu lösen, hat MySQL das UTF-8-Kodierungsformat eingeführt, damit MySQL umfangreicheren Sprachtext speichern kann. Bei der UTF-8-Kodierung (8-Bit-Unicode-Transformationsformat) handelt es sich um eine Zeichenkodierung mit variabler Länge, die alle Zeichen im Unicode-Standard unterstützt. Wenn die UTF-8-Kodierung jedoch in MySQL gespeichert wird, können verstümmelte Zeichen auftreten.
Ursachen und Lösungen für verstümmelte Zeichen:
Problem 1: Der CHARSET der MySQL-Tabelle liegt nicht im UTF-8-Format vor.
Wenn beim Erstellen einer Tabelle kein CHARSET angegeben ist, wird standardmäßig der CHARSET der Datenbank verwendet. Wenn daher der Datenbank-CHARSET nicht UTF-8 ist, werden die in der UTF-8-Codierung gespeicherten Daten verstümmelt.
1.1 Überprüfen Sie den CHARSET der Datenbank
Zuerst müssen Sie den CHARSET der Datenbank überprüfen. Sie können den aktuellen CHARSET der Datenbank mit dem folgenden Befehl überprüfen:
mysql> show create database databaseName;
1.2 Ändern Sie den CHARSET der Datenbank
Wenn der CHARSET von Da die Datenbank nicht UTF-8 ist, müssen Sie den CHARSET der Datenbank ändern. Sie können den CHARSET der Datenbank durch die folgenden Schritte ändern:
1.2.1 Sichern Sie die Datenbank
Da wir den CHARSET der Datenbank ändern müssen, müssen wir zuerst die Datenbank sichern.
1.2.2 Ändern Sie die Standardcodierung der Datenbank.
In MySQL können Sie die Standardcodierung beim Erstellen der Datenbank festlegen. Hier finden Sie eine Demonstration, wie Sie die Standardcodierung ändern .
Ändern Sie die MySQL-Konfigurationsdatei /etc/mysql/mysql.conf.d/mysqld.conf, suchen Sie „[mysqld]“ und fügen Sie den folgenden Inhalt hinzu:
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_general_ci
Nach Abschluss der Änderung speichern und beenden.
1.2.3 Datenbank- und Tabellenkodierung ändern
In MySQL können Sie die Kodierung von Datenbank, Tabelle und Spalte mit der folgenden SQL-Anweisung überprüfen:
/*查看数据库使用的编码*/ SHOW VARIABLES LIKE 'character_set_database'; /*查看数据表使用的编码*/ SHOW FULL COLUMNS FROM 表名; /*查看列使用的编码*/ SELECT column_name, character_set_name FROM information_schema.columns WHERE table_name='表名';
Wenn die aktuelle Kodierung nicht UTF-8 verwendet, müssen Sie Folgendes tun Um die Datenbank und die Tabelle zu ändern, wurde die Codierung der Spalten auf UTF-8 geändert, die über die folgende SQL-Anweisung geändert werden kann:
/*修改数据库编码为 utf8mb4 */ ALTER DATABASE databaseName CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; /*修改表编码为 utf8mb4*/ ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; /*修改列编码为 utf8mb4*/ ALTER TABLE 表名 MODIFY COLUMN 列名 varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Führen Sie nach Abschluss der Änderung die obige Anzeigecodierungsmethode erneut aus, um zu bestätigen, dass CHARSET ist UTF-8-Kodierung.
Problem 2: Für die Datenbankverbindung ist keine UTF-8-Kodierung festgelegt.
Wenn die Anwendung eine Verbindung zur MySQL-Datenbank herstellt, müssen Sie den Verbindungszeichensatz angeben. Wenn die UTF-8-Kodierung nicht festgelegt ist, schlägt das Lesen fehl und beim Schreiben von UTF-8-kodierten Daten erscheinen verstümmelte Zeichen. Wenn Sie eine Verbindung zur MySQL-Datenbank herstellen, können Sie die UTF-8-Codierung über die folgende Anweisung festlegen:
SET NAMES utf8mb4;
Frage 3: MySQL-Client zeigt Codierungsprobleme an
Bei Verwendung der Befehlszeile zum Ausführen von SQL-Anweisungen können verstümmelte Zeichen angezeigt werden, hauptsächlich weil Der Client Das Terminal zeigt verstümmelte Zeichen an. Dieses Problem kann durch Festlegen des Codierungsformats des MySQL-Clients gelöst werden.
3.1 Linux/MacOSX-Client löst verstümmelte Zeichen
In Linux- und MacOSX-Systemen können Sie das MySQL-Client-Kodierungsformat mit dem folgenden Befehl festlegen:
export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8
Nachdem die Einstellung abgeschlossen ist, können Sie den MySQL-Client ausführen und SQL-Anweisungen ausführen , und zeigt normale chinesische Zeichen an.
3.2 Windows-Client löst verstümmelte Zeichen
Im Windows-System können Sie das MySQL-Client-Kodierungsformat über die folgenden Schritte festlegen:
Systemsteuerung öffnen-> Systemeinstellungen-> ; Umgebungsvariablen
Erstellen Sie in den Umgebungsvariablen eine neue Systemvariable:
变量名:LANG 变量值:zh_CN.UTF-8
Nach Abschluss der Einstellungen können Sie den MySQL-Client ausführen, SQL-Anweisungen ausführen und chinesische Zeichen normal anzeigen.
Zusammenfassung:
Beim Speichern von UTF-8-codierten Daten in MySQL können verstümmelte Zeichen auftreten. Die Hauptgründe für das Problem mit verstümmeltem Code sind, dass der CHARSET der Tabelle nicht im UTF-8-Kodierungsformat vorliegt, die Datenbankverbindung nicht auf UTF-8-Kodierung eingestellt ist und der MySQL-Client Kodierungsprobleme anzeigt. Durch die korrekte Konfiguration von CHARSET, Verbindungszeichensatz und Client-Codierungsformat in MySQL kann das Problem der UTF-8-Codierung verstümmelter Zeichen gelöst werden.
Das obige ist der detaillierte Inhalt vonutf8 MySQL verstümmelter Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!