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

Detaillierte Erläuterung der Transaktionsisolierungsebenen der MySQL-Datenbank

Isolationsebene für Datenbanktransaktionen Es gib...

Vue/React-Einzelseitenanwendung zurück ohne Aktualisierungslösung

Inhaltsverzeichnis Einführung Warum die Mühe? Com...

Nginx löst Cross-Domain-Probleme und bindet Seiten von Drittanbietern ein

Inhaltsverzeichnis Vorwort Schwierigkeit Domänenü...

Detaillierte Erklärung langsamer MySQL-Abfragen

Informationen zu MySQL-Vorgängen abfragen Status ...

Semantisierung von HTML-Tags (einschließlich H5)

einführen HTML stellt die kontextuelle Struktur u...

Grundlegendes zum MySQL-Abfrageoptimierungsprozess

Inhaltsverzeichnis Parser und Präprozessoren Abfr...

Vue implementiert die Lupenfunktion der Produktdetailseite

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

Detaillierte Erklärung der Tomcat-Verzeichnisstruktur

Inhaltsverzeichnis Verzeichnisstruktur bin-Verzei...

So migrieren Sie lokales MySQL in eine Serverdatenbank

Wir können den scp-Befehl von Linux (scp kann unt...