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

Eine kurze Erläuterung zur Verwendung von Slots in Vue

Definition und Verwendung: Verwenden Sie die Slot...

Mit JS in zehn Minuten die Existenz von Elementen in einem Array bestimmen

Vorwort In der Front-End-Entwicklung müssen Sie h...

Kurze Einführung und Verwendung von Table und div

Web-Frontend 1 Studierendenausweis Name Geschlech...

Zusammenfassung der React-Grundlagen

Inhaltsverzeichnis Vorwort Start React-Lebenszykl...

Detaillierte Erläuterung des Linux-Indexknoten-Inode

1. Einführung in Inode Um Inode zu verstehen, müs...

So installieren Sie Postgres 12 + pgadmin im lokalen Docker (unterstützt Apple M1)

Inhaltsverzeichnis einführen Unterstützt Intel-CP...

Wie überwacht und erhält Zabbix Netzwerkgerätedaten über SSH?

Szenariosimulation: Das Betriebs- und Wartungsper...

React-Methode zum Anzeigen von Daten auf Seiten

Inhaltsverzeichnis Übergeordnete Komponente „list...

Verständnis des CSS-Selektorgewichts (persönlicher Test)

Code kopieren Der Code lautet wie folgt: <styl...

Analyse der Methode zum Einrichten geplanter Aufgaben in MySQL

Dieser Artikel beschreibt anhand eines Beispiels,...

Einführung in lokale Komponenten in Vue

In Vue können wir lokale Komponenten selbst defin...

Methoden und Schritte für den Zugriff auf die Baidu Maps API mit JavaScript

Inhaltsverzeichnis 1. Baidu Map API-Zugriff 2. Ve...

Die neueste Sammlung von 18 Webdesign-Arbeiten im grünen Stil

Toy Story 3 Online-Marketing-Website Zen Mobile E...

Die 7 besten VSCode-Erweiterungen für Vue-Entwickler

Das Hinzufügen der richtigen VS Code-Erweiterung ...