Zusammenfassung der MySQL-Zeichensätze

Zusammenfassung der MySQL-Zeichensätze

In diesem Hinweis wird hauptsächlich das Erlernen von Kenntnissen zum MySQL-Zeichensatz beschrieben.

Zeichensatz

Im Allgemeinen verwenden wir die folgende Anweisung, um eine Tabelle zu erstellen, und geben beim Erstellen der Tabelle den Zeichensatz als UTF-8-Kodierung an.

CREATE TABLE `test` (
 `c1` int UNSIGNED NOT NULL AUTO_INCREMENT,
 `c2` varchar(255),
 `c3` Zeichen(11),
 `c4` varchar(255),
 PRIMÄRSCHLÜSSEL (`c1`)
)ENGINE=InnoDB STANDARD-CHARSET=utf8;

Tatsächlich unterstützt MySQL aber auch andere Zeichensätze als UTF8. Mit dem Befehl „show charset“ können Sie alle derzeit von MySQL unterstützten Zeichensätze anzeigen.

Die folgende Abbildung zeigt beispielsweise alle von meinem MySQL unterstützten Zeichensätze.

Wie aus der obigen Abbildung ersichtlich, gibt die vierte Spalte die maximale Länge des Zeichensatzes an. Die maximale Länge von UTF-8, das wir häufig beim Erstellen von Tabellen verwenden, beträgt in MySQL tatsächlich 3 Zeichen. Es wird allgemein angenommen, dass utf8 1 bis 4 Zeichen verwendet, um bestimmte Inhalte darzustellen, aber utf8 in MySQL ist eigentlich ein Alias ​​für utf8mb3. Das authentische, das in MySQL bis zu 4 Zeichen verwendet, ist utf8mb4.

Beachten:

utf8mb4
utf8mb4

Vergleichsregeln

In der obigen Abbildung ist die dritte Spalte „Standardsortierung“ die Standardvergleichsregel dieser Zeichensätze. Beispielsweise ist die Standardvergleichsregel für den ACSII-Zeichensatz „ascii_general_ci“ und die Standardvergleichsregel für den UTF8-Zeichensatz „utf8_general_ci“.

Tatsächlich hat jeder Zeichensatz viele Vergleichsregeln. Schauen wir uns beispielsweise die Vergleichsregeln des acsii-Zeichensatzes an, wie in der folgenden Abbildung dargestellt

mysql> Sortierung wie „ascii%“ anzeigen;
+------------------+---------+----+---------+----------+---------+
| Sortierung | Zeichensatz | ID | Standard | Kompiliert | Sortlen |
+------------------+---------+----+---------+----------+---------+
| ascii_general_ci | ascii | 11 | Ja | | 0 |
| ascii_bin | ascii | 65 | | | 0 |
+------------------+---------+----+---------+----------+---------+

ascii_general_ci gibt einen allgemeinen Vergleich an, wobei _ci bedeutet, dass die Groß-/Kleinschreibung nicht beachtet wird. (Im Gegenteil, _cs bedeutet Groß-/Kleinschreibung beachten)

ascii_bin bedeutet binärer Vergleich

Schauen wir uns die Vergleichsregeln der Zeichensätze utf8 und utf8mb4 an, wie in der folgenden Abbildung dargestellt

mysql> Sortierung wie „utf8%“ anzeigen;
+--------------------------+---------+-----+---------+----------+----------+---------+
| Sortierung | Zeichensatz | ID | Standard | Kompiliert | Sortlen |
+--------------------------+---------+-----+---------+----------+----------+---------+
| utf8_general_ci | utf8 | 33 | Ja | Ja | 1 |
| utf8_bin | utf8 | 83 | | Ja | 1 |
| utf8_unicode_ci | utf8 | 192 | | Ja | 8 |
| utf8_icelandic_ci | utf8 | 193 | | Ja | 8 |
| utf8_latvian_ci | utf8 | 194 | | Ja | 8 |
| utf8_romanian_ci | utf8 | 195 | | Ja | 8 |
| utf8_slovenian_ci | utf8 | 196 | | Ja | 8 |
| utf8_polish_ci | utf8 | 197 | | Ja | 8 |
| utf8_estonian_ci | utf8 | 198 | | Ja | 8 |
| utf8_spanish_ci | utf8 | 199 | | Ja | 8 |
| utf8_swedish_ci | utf8 | 200 | | Ja | 8 |
| utf8_turkish_ci | utf8 | 201 | | Ja | 8 |
| utf8_czech_ci | utf8 | 202 | | Ja | 8 |
| utf8_danish_ci | utf8 | 203 | | Ja | 8 |
| utf8_lituanian_ci | utf8 | 204 | | Ja | 8 |
| utf8_slovak_ci | utf8 | 205 | | Ja | 8 |
| utf8_spanish2_ci | utf8 | 206 | | Ja | 8 |
| utf8_roman_ci | utf8 | 207 | | Ja | 8 |
| utf8_persian_ci | utf8 | 208 | | Ja | 8 |
| utf8_esperanto_ci | utf8 | 209 | | Ja | 8 |
| utf8_hungarian_ci | utf8 | 210 | | Ja | 8 |
| utf8_sinhala_ci | utf8 | 211 | | Ja | 8 |
| utf8_german2_ci | utf8 | 212 | | Ja | 8 |
| utf8_croatian_ci | utf8 | 213 | | Ja | 8 |
| utf8_unicode_520_ci | utf8 | 214 | | Ja | 8 |
| utf8_vietnamese_ci | utf8 | 215 | | Ja | 8 |
| utf8_general_mysql500_ci | utf8 | 223 | | Ja | 1 |
| utf8mb4_general_ci | utf8mb4 | 45 | Ja | Ja | 1 |
| utf8mb4_bin | utf8mb4 | 46 | | Ja | 1 |
| utf8mb4_unicode_ci | utf8mb4 | 224 | | Ja | 8 |
| utf8mb4_icelandic_ci | utf8mb4 | 225 | | Ja | 8 |
| utf8mb4_latvian_ci | utf8mb4 | 226 | | Ja | 8 |
| utf8mb4_romanian_ci | utf8mb4 | 227 | | Ja | 8 |
| utf8mb4_slovenian_ci | utf8mb4 | 228 | | Ja | 8 |
| utf8mb4_polish_ci | utf8mb4 | 229 | | Ja | 8 |
| utf8mb4_estonian_ci | utf8mb4 | 230 | | Ja | 8 |
| utf8mb4_spanish_ci | utf8mb4 | 231 | | Ja | 8 |
| utf8mb4_swedish_ci | utf8mb4 | 232 | | Ja | 8 |
| utf8mb4_turkish_ci | utf8mb4 | 233 | | Ja | 8 |
| utf8mb4_czech_ci | utf8mb4 | 234 | | Ja | 8 |
| utf8mb4_danish_ci | utf8mb4 | 235 | | Ja | 8 |
| utf8mb4_lituanian_ci | utf8mb4 | 236 | | Ja | 8 |
| utf8mb4_slovak_ci | utf8mb4 | 237 | | Ja | 8 |
| utf8mb4_spanish2_ci | utf8mb4 | 238 | | Ja | 8 |
| utf8mb4_roman_ci | utf8mb4 | 239 | | Ja | 8 |
| utf8mb4_persian_ci | utf8mb4 | 240 | | Ja | 8 |
| utf8mb4_esperanto_ci | utf8mb4 | 241 | | Ja | 8 |
| utf8mb4_hungarian_ci | utf8mb4 | 242 | | Ja | 8 |
| utf8mb4_sinhala_ci | utf8mb4 | 243 | | Ja | 8 |
| utf8mb4_german2_ci | utf8mb4 | 244 | | Ja | 8 |
| utf8mb4_croatian_ci | utf8mb4 | 245 | | Ja | 8 |
| utf8mb4_unicode_520_ci | utf8mb4 | 246 | | Ja | 8 |
| utf8mb4_vietnamese_ci | utf8mb4 | 247 | | Ja | 8 |
+--------------------------+---------+-----+---------+----------+----------+---------+

Die Verwendung unterschiedlicher Vergleichsregeln zum Vergleichen von Daten kann zu unterschiedlichen Ergebnissen führen.

Der Zeichensatz und die Vergleichsregeln entsprechen einander. Egal, ob Sie nur den Zeichensatz oder nur die Vergleichsregeln ändern, das andere ändert sich automatisch entsprechend.

Vier Ebenen von Zeichensätzen und Vergleichsregeln

Der Zeichensatz und die Vergleichsregeln wurden oben erwähnt. Tatsächlich gibt es in MySQL verschiedene Ebenen von Zeichensätzen und Vergleichsregeln:

  • Serverebene
  • Datenbankebene
  • Tabellenebene
  • Spaltenebene

Informationen zu Zeichensätzen auf Serverebene finden Sie im Parameter character_set_server und Vergleichsregeln auf Serverebene im Parameter collation_server.

mysql> Variablen wie „character_set_server“ anzeigen;
+----------------------+----------+
| Variablenname | Wert |
+----------------------+----------+
| Zeichensatzserver | utf8 |
+----------------------+----------+
1 Zeile im Satz (0,00 Sek.)

mysql> Variablen wie „collation_server“ anzeigen;
+------------------+-----------------+
| Variablenname | Wert |
+------------------+-----------------+
| Sortierserver | utf8_general_ci |
+------------------+-----------------+
1 Zeile im Satz (0,00 Sek.)

Wenn Sie den Zeichensatz und die Vergleichsregeln auf Datenbankebene anzeigen möchten, können Sie zunächst mit xxxdb zu einer bestimmten Datenbank wechseln und dann Show-Variablen wie „character_set_database“ und Show-Variablen wie „collation_database“ ausführen, um den Zeichensatz und die Vergleichsregeln der Datenbank anzuzeigen.

Datenbank geändert
mysql> Variablen wie „character_set_database“ anzeigen;
+------------------------+----------+
| Variablenname | Wert |
+------------------------+----------+
| Zeichensatzdatenbank | utf8 |
+------------------------+----------+
1 Zeile im Satz (0,00 Sek.)

mysql> Variablen wie „collation_database“ anzeigen;
+--------------------+-----------------+
| Variablenname | Wert |
+--------------------+-----------------+
| Sortierdatenbank | utf8_general_ci |
+--------------------+-----------------+
1 Zeile im Satz (0,00 Sek.)

Wenn Sie den Zeichensatz und die Vergleichsregeln einer Tabelle oder einer Spalte in einer Tabelle anzeigen möchten, können Sie mit „show create table xxxtb“ die spezifische Anweisung zur Tabellenerstellung anzeigen, die den verwendeten Zeichensatz und die Vergleichsregeln enthält.

Wenn beim Erstellen der Datenbank der Zeichensatz und die Vergleichsregeln nicht angegeben werden, werden der Zeichensatz und die Vergleichsregeln auf Serverebene als Zeichensatz und Vergleichsregeln der Datenbank verwendet. Wenn in der Anweisung zum Erstellen oder Ändern einer Tabelle kein Zeichensatz und keine Vergleichsregeln angegeben werden, werden als Zeichensatz und Vergleichsregeln der Tabelle der Zeichensatz und die Vergleichsregeln der Datenbank verwendet, in der sich die Tabelle befindet.

Drei Systemvariablen

Der MySQL-Server kann mehreren Clients entsprechen, und die Codierungsmethoden dieser Clients können unterschiedlich sein, aber der Zeichensatz der Daten in der Datenbank ist sicher. MySQL muss für verschiedene Clients eine Codierungskonvertierungsverarbeitung durchführen und dann die Ergebnisse an den Client zurückgeben.

In MySQL gibt es drei Systemvariablen auf SESSION-Ebene, die die oben genannten Vorgänge ausführen können:

  • character_set_client: Der vom Server zum Dekodieren von Clientanforderungen verwendete Zeichensatz
  • character_set_connection: Wenn der Server die Anfrage verarbeitet, konvertiert er die Anfragezeichenfolge von character_set_client in character_set_connection.
  • character_set_results: Der vom Server verwendete Zeichensatz bei der Rückgabe von Daten an den Client

Der MySQL-Server verwaltet für jeden Client eine Kopie dieser drei Variablen auf Sitzungsebene.

Um Probleme in tatsächlichen Produktionsumgebungen zu vermeiden, haben Unternehmen jedoch im Allgemeinen Vorschriften, die von Clients verlangen, standardmäßig den UTF-8-Zeichensatz zu verwenden.

Oben finden Sie eine detaillierte Zusammenfassung des MySQL-Zeichensatzes. Weitere Informationen zum MySQL-Zeichensatz finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Praktisches Tutorial zum Ändern des MySQL-Zeichensatzes
  • Detaillierte Erläuterung der Methode zur Festlegung des MySQL-Zeichensatzes (Terminal-Zeichensatz)
  • Detaillierte Erklärung der Zeichensätze und Validierungsregeln in MySQL
  • Tutorial zum Anzeigen und Ändern von MySQL-Zeichensätzen
  • So ändern Sie den MySQL-Zeichensatz
  • Ursachen und Lösungen für das Problem des verstümmelten Zeichensatzes in der MySQL-Datenbank
  • So ändern Sie den MySQL-Zeichensatz utf8 in utf8mb4
  • So vereinheitlichen Sie den Zeichensatz einer vorhandenen MySQL-Datenbank
  • Verstümmelte Zeichen und Lösungen im MySQL-Zeichensatz
  • Detaillierte Erläuterung der JDBC-Verarbeitung des Mysql utf8mb4-Zeichensatzes
  • So ändern Sie den Standardzeichensatz von MySQL auf dem MAC auf UTF-8

<<:  Beispielcode zum Implementieren eines gleichhohen Layouts auf mehrere Arten mit CSS

>>:  Lösung für den Fehler beim Aufrufen des Containers aufgrund vollen Docker-Speicherplatzes

Artikel empfehlen

So verwenden Sie den Linux-Befehl md5sum

01. Befehlsübersicht md5sum - MD5-Prüfcode berech...

mysql charset=utf8 verstehen Sie wirklich, was es bedeutet

1. Schauen wir uns zunächst eine Anweisung zur Ta...

So verwenden Sie die ElementUI-Paginierungskomponente Paginierung in Vue

Die Verwendung der ElementUI-Paging-Komponente Pa...

Lösung zur inkonsistenten Anzeige der Cursorgröße im Eingabefeld

Die Cursorgröße im Eingabefeld ist inkonsistent De...

HTML-Seite unterstützt die Implementierung des Dunkelmodus

Seit 2019 verwenden sowohl Android- als auch iOS-...

Ein Artikel, der Ihnen hilft, mehr über JavaScript-Arrays zu erfahren

Inhaltsverzeichnis 1. Die Rolle des Arrays: 2. De...

Zusammenfassung des Wissens zum Vue V-Modell

​v-model ist eine Vue-Direktive, die eine bidirek...

React führt antd-mobile+postcss ein, um ein mobiles Terminal zu erstellen

Installieren Sie antd-mobile Globaler Import npm ...

Details zum MySQL-Index-Pushdown

Inhaltsverzeichnis 1. Prinzip des ganz linken Prä...

Vue implementiert den Download von ZIP-Dateien

In diesem Artikelbeispiel wird der spezifische Co...