mysql charset=utf8 verstehen Sie wirklich, was es bedeutet

mysql charset=utf8 verstehen Sie wirklich, was es bedeutet

1. Schauen wir uns zunächst eine Anweisung zur Tabellenerstellung an

Tabelle „Student“ erstellen (
  sid int Primärschlüssel aotu_increment,
  sname varchar(20) nicht null,
  Alter int
)Zeichensatz=utf8;

Betrachten Sie eine Frage:

  • Wenn wir beim Erstellen einer Tabelle nicht charset=utf8 angeben, warum tritt dann beim Einfügen chinesischer Zeichen ein Fehler auf?
  • Warum kann Chinesisch nach der Angabe von charset=utf8 erneut ohne verstümmelte Zeichen eingefügt werden?

2. Überprüfen Sie den Zeichensatz des CMD-Schwarzfensters

Öffnen Sie das schwarze CMD-Fenster –> platzieren Sie die Maus oben im Fenster –> klicken Sie mit der rechten Maustaste –> Eigenschaften –> klicken Sie auf Optionen

Bildbeschreibung hier einfügen

Aus dem obigen Bild können wir erkennen, dass die für die Texteingabe in CMD verwendete Zeichenkodierung GBK ist. Gleichzeitig wird beim Speichern von Dateien häufig der ANSI-Zeichensatz angezeigt, der den lokalen Zeichensatz darstellt. In China verwendet der lokale Zeichensatz die GBK-Kodierung.

3.Haben Sie dieses Problem bemerkt?

Bildbeschreibung hier einfügen

Die vom Client eingegebenen Zeichen werden alle in GBK kodiert. Die vom MySQL-Server gespeicherten Zeichen sind in UTF8 kodiert. Anschließend fügen wir Datenbank und Tabelle hinzu, löschen, ändern und fragen sie ab und kehren schließlich zur Client-Schnittstelle zurück. Um sicherzustellen, dass die Zeichen nicht verstümmelt sind, müssen sie den „Kodierungskonvertierungsprozess“ durchlaufen. Ich möchte fragen, was genau diesen Kodierungskonvertierungsprozess abschließt?

4. Mehrere MySQL-Operationsbefehle, mit denen Sie nicht vertraut sind

-- Alle von der Datenbank unterstützten Zeichensätze anzeigen (dieser Befehl wird automatisch ausgeführt).
mysql> Zeichensatz anzeigen;
- Überprüfen Sie den aktuellen Status des Systems, wo Sie einige Zeichensatzeinstellungen sehen können.
mysql> Status;
- Zeigen Sie die Systemzeichensatzeinstellungen an, einschließlich aller Zeichensatzeinstellungen mysql> Variablen wie „%char%“ anzeigen;

Die Ergebnisse der Operation sind wie folgt:

Bildbeschreibung hier einfügen

Auf dem Bild oben können wir sehen, dass es etwas gibt, das „Verbindung“ heißt, und der chinesische Name dafür ist „Connector“. Der „Connector“ wird verwendet, um den „Kodierungskonvertierungsprozess“ durchzuführen.

1) Eigenschaften von Steckverbindern

① „Funktion des Steckers“:

Verbinden Sie Client und Server, um Zeichensätze zu konvertieren. Der Connector verfügt über diese automatische Konvertierungsfunktion.

② „Connector-Arbeitsablauf“:
Ⅰ Zuerst werden die Zeichen des Clients an den Connector gesendet, und der Connector wählt eine Kodierung aus, um sie zur vorübergehenden Speicherung zu konvertieren (die Kodierung nach der Konvertierung entspricht dem Kodierungsformat des Connectors).
Ⅱ Anschließend konvertiert der Connector es wieder in die mit dem Server konsistente Kodierung und speichert es schließlich auf dem Server.
III Anschließend durchläuft das vom Server zurückgegebene Ergebnis erneut den Connector. Der Connector wählt noch eine Kodierung aus, um es zur temporären Speicherung zu konvertieren (die Kodierung nach der Konvertierung entspricht dem Kodierungsformat des Connectors).
IV Abschließend konvertiert der Connector das Ergebnis in einen mit dem Client konsistenten Zeichensatz, sodass es auf dem Client normal angezeigt werden kann.

2) Darstellung der Funktion des Steckverbinders

Abbildung 1:

Bildbeschreibung hier einfügen

Abbildung 1 wird wie folgt beschrieben:

Bildbeschreibung hier einfügen

Abbildung 2:

Bildbeschreibung hier einfügen

Abbildung 2 wird wie folgt beschrieben:

Bildbeschreibung hier einfügen

5. Praktische Demonstration der beiden obigen Abbildungen

1) Verstehen Sie zunächst die folgenden Codes.

- 1) Legen Sie den Zeichensatz des Clients fest.
setze Zeichensatz-Client=gbk;
- 2) Stellen Sie den Zeichensatz des Connectors ein.
setze Zeichensatzverbindung=utf8;
- 3) Legen Sie den Zeichensatz des zurückgegebenen Ergebnisses fest.
setze Zeichensatzergebnisse=gbk;

2) Der Codedemonstrationsprozess ist ausführlich in der SQL-Datei unter dem folgenden Link beschrieben, die Sie herunterladen und selbst anzeigen können.

http://note.youdao.com/noteshare?id=3fe60a490637d1a51ac78bf4a9e7e4d0&sub=511D73BDDEA34D9BAC565249035D74A8

6. Zwei Gründe für verstümmelte Zeichen

Die durch die Inkonsistenz zwischen Dekodierung und tatsächlicher Kodierung verursachten verstümmelten Zeichen können repariert werden .

Während des Übertragungsvorgangs gehen aufgrund inkonsistenter Kodierung einige Bytes verloren, was zu verstümmelten Zeichen führt , die nicht repariert werden können.

1) Verstümmelte Zeichen aufgrund inkonsistenter Kodierung und Dekodierung

Bildbeschreibung hier einfügen

2) Verstümmelte Zeichen entstehen durch verlorene Bytes während der Übertragung.

Bildbeschreibung hier einfügen

7. Analyse der Ist-Situation (was ist die Systemvorgabe, wenn nichts eingestellt ist?)

1) Schauen Sie sich die folgenden Bilder genau an

Bildbeschreibung hier einfügen

Anhand des obigen Bildes können wir Folgendes erkennen (die folgende Textbeschreibung ist gut zu verstehen):

Bildbeschreibung hier einfügen

Abbildung 2:

Bildbeschreibung hier einfügen

2) Die Bedeutung der Setnamen gbk

-- Wenn die Zeichensätze von Client, Connector und Rückgabewert identisch sind und alle gbk lauten, können wir die folgende Abkürzung verwenden:
 Namen festlegen gbk;
 -- Die obige SQL-Anweisung enthält tatsächlich die folgenden drei Bedeutungen:
 setze Zeichensatz-Client=gbk;
 setze Zeichensatzverbindung=gbk;
 setze Zeichensatzergebnisse=gbk;

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützt

Das könnte Sie auch interessieren:
  • Schritte zum Ändern des MySQL-Zeichensatzes auf UTF8 unter Linux
  • Beispiel für utf8mb4-Sortierung in MySQL
  • MySQL-Kodierung utf8 und utf8mb4 utf8mb4_unicode_ci und utf8mb4_general_ci
  • So ändern Sie die Kodierung der MySQL-Datenbank in utf8mb4
  • So ändern Sie den MySQL-Zeichensatz utf8 in utf8mb4
  • mysql verstümmelte Zeichen Latin1-Zeichen in UTF8-Details konvertiert

<<:  jQuery zum Erreichen des Sperrfeuereffekts

>>:  Implementierungsmethode für die Datenspeicherung im WeChat-Applet

Artikel empfehlen

SQL-Implementierung von LeetCode (196. Doppelte Postfächer löschen)

[LeetCode] 196.Doppelte E-Mails löschen Schreiben...

HTML-Tabellen-Tag-Tutorial (7): Hintergrundfarbattribut BGCOLOR

Die Hintergrundfarbe der Tabelle kann über das At...

Farbabstimmungstechniken und Effektdarstellung für Beauty- und Styling-Websites

Farbe ist eines der wichtigsten Elemente jeder We...

Detaillierte Analyse des React Diff-Prinzips

Inhaltsverzeichnis Diffing-Algorithmus Schicht-fü...

Ausführliches Tutorial zur Installation von MySQL 8.0.19 (Windows 64 Bit)

Inhaltsverzeichnis MySQL initialisieren MySQL-Die...

Zwei Möglichkeiten zum Löschen von Floats in HTML

1. Methode 1 zum Löschen von Floating Legen Sie d...

Implementierung der Navigationsleiste und des Dropdown-Menüs in CSS

1. CSS-Navigationsleiste (1) Funktion der Navigat...

Analyse des Implementierungsprozesses der Docker-Container-Orchestrierung

In tatsächlichen Entwicklungs- oder Produktionsum...

Der Unterschied zwischen MySQL execute, executeUpdate und executeQuery

Die Unterschiede zwischen „execute“, „executeUpda...

Eine detaillierte Einführung in die Grundlagen des Linux-Scriptings

Inhaltsverzeichnis 1. Skript-Vim-Umgebung 2. So d...

Die Vorteile von Div+CSS und Web-Standardseiten

Das Div-Element wird verwendet, um Struktur und Hi...

So richten Sie geplante Aufgaben in Linux und Windows ein

Inhaltsverzeichnis Linux 1. Grundlegende Verwendu...