Vorwort Ein Zeichensatz ist eine Reihe von Symbolen und Kodierungsregeln. Ob in einer Oracle-Datenbank oder einer MySQL-Datenbank, es gibt das Problem der Zeichensatzauswahl. Wenn der Zeichensatz während der Datenbankerstellungsphase nicht richtig ausgewählt wird, muss der Zeichensatz möglicherweise später ersetzt werden. Das Ersetzen des Zeichensatzes ist ein relativ kostspieliger Vorgang und birgt auch gewisse Risiken. Daher empfehlen wir Ihnen, zu Beginn der Anwendung den geeigneten Zeichensatz entsprechend Ihren Anforderungen richtig auszuwählen, um später unnötige Anpassungen zu vermeiden. Tatsächlicher Kampf 1. MySQL-Datenbank installieren 2. Demonstration des verstümmelten Codes mysql> Variablen wie „character_set%“ anzeigen; +--------------------------+----------------------------------+ | Variablenname | Wert | +--------------------------+----------------------------------+ | Zeichensatzclient | utf8 | | Zeichensatzverbindung | utf8 | | Zeichensatzdatenbank | utf8 | | Zeichensatz_Dateisystem | Binär | | Zeichensatzergebnisse | utf8 | | Zeichensatzserver | utf8 | | Zeichensatzsystem | utf8 | | Zeichensatzverzeichnis | /usr/local/mysql/share/charsets/ | +--------------------------+----------------------------------+ 8 Zeilen im Satz (0,00 Sek.) mysql> in test.table10 Werte einfügen (1, 'null'); Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> wähle * aus test.table10; +------+----------+ | ID | Namen | +------+----------+ | 1 | Kranich in den Wolken| +------+----------+ 1 Zeile im Satz (0,00 Sek.) mysql> Namen festlegen latin1; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> wähle * aus test.table10; +------+--------+ | ID | Namen | +------+--------+ | 1 | ??? | +------+--------+ 1 Zeile im Satz (0,00 Sek.) mysql> Variablen wie „character_set%“ anzeigen; +--------------------------+----------------------------------+ | Variablenname | Wert | +--------------------------+----------------------------------+ | character_set_client | latin1 #Von den Client-Quelldaten verwendeter Zeichensatz | character_set_connection | latin1 #Zeichensatz der Verbindungsebene | character_set_database | utf8 #Standardzeichensatz der aktuell ausgewählten Datenbank | character_set_filesystem | binary | character_set_results | latin1 #Abfrageergebnis-Zeichensatz | | character_set_server | utf8 #Standard-Zeichensatz für interne Operationen | | character_set_system | utf8 #Systemmetadaten (Feldnamen usw.) Zeichensatz | character_sets_dir | /usr/local/mysql/share/charsets/ | +--------------------------+----------------------------------+ 8 Zeilen im Satz (0,00 Sek.) Lösung für verstümmelten Code Wie oben zu sehen ist, ändert set names latin1; drei Parameter. Solange Client, MySQL-Zeichensatz-Client und Tabellen-Zeichensatz vollständig konsistent sind, kann garantiert werden, dass keine verstümmelten Zeichen auftreten. Weg: 1. Führen Sie den Satznamen xxx im MySQL-Befehlszeilenmodus aus. mysql> Namen festlegen utf8; Abfrage OK, 0 Zeilen betroffen (0,01 Sek.) 2. Geben Sie den Standardzeichensatz an, wenn Sie sich bei MySQL anmelden [root@node1 ~]# mysql -S /tmp/mysql.sock4 --defaults-character-set=utf8 #-S gibt die Socket-Datei für mehrere Instanzen von MySQL an. Verwenden Sie --defaults-character-set, um den Standardzeichensatz anzugeben. 3. Ändern Sie die Datei /etc/sysconfig/i18n, wenn my.cnf den Standardzeichensatz nicht angibt. vim /etc/sysconfig/i18n LANG='zh_CN.UTF-8' #Wenn my.cnf nicht angegeben ist, wird standardmäßig der Systemzeichensatz verwendet 4. Ändern Sie die Datei my.cnf. Die folgenden beiden Felder können in jedem beliebigen Feld enthalten sein. [Kunde] Standardzeichensatz = Latin1 [mysql] Standardzeichensatz = Latin1 Die ersten beiden 1 und 2 sind temporäre Lösungen und die letzten beiden 3 und 4 sind permanente Lösungen. Zeichensatz anzeigen 1. Überprüfen Sie die aktuellen Zeichensatzeinstellungen des Systems, melden Sie sich bei MySQL an und führen Sie die Änderung aus. zeige nur Variablen 'character_set%'; mysql> zeige Variablen wie 'character_set%';#Ich habe es auf utf8 geändert, sodass die drei Parameter des Clients alle utf8 sind. Sie können den Zeichensatz selbst festlegen. +--------------------------+----------------------------------+ | Variablenname | Wert | +--------------------------+----------------------------------+ | Zeichensatzclient | utf8 | | Zeichensatzverbindung | utf8 | | Zeichensatzdatenbank | utf8 | | Zeichensatz_Dateisystem | Binär | | Zeichensatzergebnisse | utf8 | | Zeichensatzserver | utf8 | | Zeichensatzsystem | utf8 | | Zeichensatzverzeichnis | /usr/local/mysql/share/charsets/ | 2. Häufig verwendete Zeichensätze für MySQL. Führen Sie den Befehl „show character set;“ aus, um die vom System unterstützten Zeichensätze anzuzeigen. mysql> Zeichensatz anzeigen; +----------+-----------------+---------------------+---------+ | Zeichensatz | Beschreibung | Standardsortierung | Maxlen | +----------+-----------------+---------------------+---------+ | big5 | Big5 Traditionelles Chinesisch | big5_chinese_ci | 2 | | dec8 | DEZ Westeuropäisch | dec8_swedish_ci | 1 | | cp850 | DOS Westeuropäisch | cp850_general_ci | 1 | | hp8 | HP Westeuropäisch | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom Russisch | koi8r_general_ci | 1 | | latin1 | cp1252 Westeuropäisch | latin1_swedish_ci | 1 | #common | latin2 | ISO 8859-2 Mitteleuropäisch | latin2_general_ci | 1 | | swe7 | 7-Bit Schwedisch | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanisch | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanisch | sjis_japanese_ci | 2 | | Hebräisch | ISO 8859-8 Hebräisch | hebrew_general_ci | 1 | | tis620 | TIS620 Thailändisch | tis620_thai_ci | 1 | | euckr | EUC-KR Koreanisch | euckr_korean_ci | 2 | | koi8u | KOI8-U Ukrainisch | koi8u_general_ci | 1 | | gb2312 | GB2312 Vereinfachtes Chinesisch | gb2312_chinese_ci | 2 | | Griechisch | ISO 8859-7 Griechisch | greek_general_ci | 1 | | cp1250 | Windows Mitteleuropäisch | cp1250_general_ci | 1 | | gbk | GBK vereinfachtes Chinesisch | gbk_chinese_ci | 2 | #Common | latin5 | ISO 8859-9 Türkisch | latin5_turkish_ci | 1 | | armscii8 | ARMSCII-8 Armenisch | armscii8_general_ci | 1 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 |#Allgemein | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | cp866 | DOS Russisch | cp866_general_ci | 1 | | keybcs2 | DOS Kamenicky Tschechisch-Slowakisch | keybcs2_general_ci | 1 | | macce | Mac Mitteleuropäisch | macce_general_ci | 1 | | macroman | Mac Westeuropäisch | macroman_general_ci | 1 | | cp852 | DOS Mitteleuropäisch | cp852_general_ci | 1 | | latin7 | ISO 8859-13 Baltikum | latin7_general_ci | 1 | | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 | #Allgemein | cp1251 | Windows-Kyrillisch | cp1251_general_ci | 1 | | utf16 | UTF-16 Unicode | utf16_general_ci | 4 | | cp1256 | Windows-Arabisch | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | | utf32 | UTF-32 Unicode | utf32_general_ci | 4 | | binär | Binärer Pseudozeichensatz | binär | 1 | | geostd8 | GEOSTD8 Georgisch | geostd8_general_ci | 1 | | cp932 | SJIS für Windows Japanisch | cp932_japanese_ci | 2 | | eucjpms | UJIS für Windows Japanisch | eucjpms_japanese_ci | 3 | +----------+-----------------+---------------------+---------+ 39 Zeilen im Satz (0,00 Sek.) Zeichensatzauswahl 1. Wenn Sie mit einer Vielzahl von Texten arbeiten und in Ländern und Regionen mit unterschiedlichen Sprachen veröffentlichen, wählen Sie Unicode. , für MySQL verwenden Sie UTF-8. 2. Wenn Sie nur Chinesisch benötigen, das Datenvolumen groß und die Leistungsanforderungen hoch sind, wählen Sie gbk. 3. Um mobile IoT-Dienste zu verarbeiten, wählen Sie utf8mb4 Es wird empfohlen, einen kleinen Zeichensatz zu verwenden, solange dieser die Anwendungsanforderungen vollständig erfüllen kann. Denn ein kleinerer Zeichensatz bedeutet eine Platzersparnis und eine Reduzierung der über das Netzwerk übertragenen Byte-Anzahl, gleichzeitig verbessert sich durch den geringeren Speicherplatz indirekt auch die Systemleistung. Server-Zeichensatzeinstellungen [mysqld] ... character-set-server=utf8 #Fügen Sie diese Anweisung hinzu, um den serverseitigen Zeichensatz festzulegen. Nach dem Neustart des MySQL-Servers ändern sich diese beiden Parameter auf die eingestellten Werte. | Zeichensatzserver | utf8 | Zeichensatzdatenbank | utf8 Zeichensatz wechseln Konvertieren Sie eine Datenbank in einer Kodierung in Daten in einer anderen Kodierung. Datenbank-DBName-Zeichensatz xxx ändern; #Gilt nur für zukünftige Daten und ist für vorherige Daten ungültig. Grundsätzlich nicht genutzt Häufig verwendete Lösungen für Konvertierungsdatenbank-Zeichensätze mysqldump -S /tmp/mysql.sock4 --default-character-set=utf8 -d test > /data/test-`date +%F`.sql #1. Exportieren Sie die Tabellenstruktur, ohne Daten zu exportieren vim /data/test-`date +%F`.sql Tabelle löschen, wenn `table10` vorhanden ist; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET Zeichensatzclient = utf8 */; CREATE TABLE `table10` ( `id` int(11) DEFAULT NULL, `Namen` char(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; #2. Ändern Sie hier den CHARSET in den Zeichensatz, den Sie ändern möchtenmysqldump -S /tmp/mysql.sock4 --extended-insert --no-create-info test > /data/test-data-`date +%F`.sql #3. Dateninhalt exportierenvim /data/test-data-`date +%F`.sql SPERRT TABELLEN `table10` SCHREIBEN; Namen festlegen utf8; #4, diese Zeile wird hinzugefügt, geben Sie den Zeichensatz an, den Sie konvertieren möchten INSERT INTO `table10` VALUES (1,'云中鹤'); TABELLEN ENTSPERREN; mysql> Datenbank erstellen, wenn nicht vorhanden, Test; #5. Erstellen Sie eine Datenbank zum Speichern der konvertierten Daten. Abfrage OK, 1 Zeile betroffen, 0 Warnungen (0,00 Sek.) mysql -S /tmp/mysql.sock4 test < /data/test-`date +%F`.sql #6. Tabellenstruktur importierenmysql -S /tmp/mysql.sock4 test < /data/test-data-2015-09-25.sql #7. Tabellendaten importieren endlich Dies ist die Notiz, die ich gemacht habe, als ich 2015 MySQL lernte. Ich teile sie heute mit Ihnen. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Vue implementiert Chat-Schnittstelle
>>: Detaillierte Erklärung der Firewall-Regeleinstellungen und Befehle (Whitelist-Einstellungen)
Hintergrund Das Agile-Modell wird häufig verwende...
Inhaltsverzeichnis 1. Angelegenheiten: Vier Haupt...
1. Stellen Sie zunächst eine Remoteverbindung zum...
Inhaltsverzeichnis Das Verfahren Im Objekt Verste...
1. Offizielle Einführung grep ist ein häufig verw...
Inhaltsverzeichnis 1. Entpacken 2. Erstellen Sie ...
Schritt 1. Aktivieren Sie die langsame MySQL-Abfr...
1. Nach der Installation der Windows-Version von ...
Ursache Ich habe vor Kurzem mit der Umstrukturier...
Vorwort Einfach ausgedrückt ist tcpdump ein Paket...
Vorwort Das MySQL Slow Query Log ist ein Protokol...
Kurz zusammengefasst: Browserkompatibilitätsprobl...
Überblick über die Alibaba Cloud Security Group F...
Einführung Wenn Sie mit der Verwendung von JDBC z...
Ich glaube, dass viele Benutzer, die Websites ers...