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

jQuery simuliert einen Picker, um einen gleitenden Auswahleffekt zu erzielen

In diesem Artikel wird der spezifische Code von j...

Warum sind die Bilder in mobilen Web-Apps nicht klar und sehr verschwommen?

Warum? Am einfachsten lässt es sich so ausdrücken:...

Detaillierte Erklärung der Text-Fill-Color-Eigenschaft in CSS3

Was bedeutet Textfüllfarbe? Rein wörtlich bedeute...

Erste Schritte Tutorial für Anfänger ⑨: So erstellen Sie eine Portal-Website

Darüber hinaus wird eine mit einem Blog-Programm e...

Übersicht über MySQL-Statistiken

MySQL führt SQL durch den Prozess der SQL-Analyse...

Das vergessene Button-Tag

Hinweis: Dieser Artikel wurde von jemand anderem ü...

MySQL Deep Paging (wie man schnell Millionen von Daten paginiert)

Inhaltsverzeichnis Vorwort Fall Optimierung Zusam...

Vergleich der Vorteile von vue3 und vue2

Inhaltsverzeichnis Vorteil 1: Optimierung des Dif...

JS erhält Fünf-Sterne-Lob

In diesem Artikel wird der spezifische Code von J...

Grundlegende Verwendung der JS-Datumssteuerung My97DatePicker

My97DatePicker ist ein sehr flexibles und benutze...

Analyse der MySQL-Transaktionsmerkmale und Ebenenprinzipien

1. Was ist eine Transaktion? Eine Datenbanktransa...

Verbesserungen am Webserver zur Verbesserung der Website-Leistung

<br />Im ersten Abschnitt dieser Reihe haben...