Heim >Datenbank >MySQL-Tutorial >Detaillierte Erläuterung der Probleme mit dem MySQL-Zeichensatz (Bild)
Kürzlich musste ein altes Projekt des Unternehmens Emoji-Ausdrücke unterstützen. Zuerst dachte ich, es würde nur darum gehen, die Tabellenfelder in der Datenbank zu ändern, aber unerwartet verursachte es eine Reihe von Problemen. Fassen Sie es hier zur Erinnerung zusammen.
01 MySQL ZeichensatzEinstellungen
character_set_server: Standardmäßiger interner Betriebszeichensatz
character_set_client: Von Client-Quelldaten verwendeter Zeichensatz
character_set_connection: Zeichensatz der Verbindungsschicht
character_set_results: Abfrageergebnis Zeichensatz
character_set_database: Standardzeichensatz der aktuell ausgewählten Datenbank
character_set_system: Systemmetadaten (Feldnamen usw.) Zeichensatz
02 Zeichensatzkonvertierungsprozess in MySQL
MySQL Server konvertiert die Anforderungsdaten von character_set_client
nach character_set_connection
, wenn die Anforderung empfangen wird.
konvertiert die Anforderungsdaten von character_set_connection
, bevor interne Vorgänge ausgeführt werden ist ein interner Betriebszeichensatz und seine Bestimmungsmethode ist wie folgt:
Verwenden Sie den CHARACTER SET-Einstellungswert des Feldes in der Tabelle; 🎜>
Wenn der oben genannte Wert nicht vorhanden ist, verwenden Sie den Einstellungswert DEFAULT CHARACTER SET der entsprechenden Datentabelle (MySQL-Erweiterung, Nicht-SQL-Standard);character_set_server
character_set_results
Character-Set-Server: Legen Sie den internen Betriebszeichensatz des Systems fest (d. h. den oben genannten Character_set_server)Collation_server: Legen Sie die Standard-Zeichensatzsortierung des Systems fest
04 PHP-Verbindung MySQL (am Beispiel der PDO-Verbindungsmethode)Zwei gängige Methoden zum Festlegen des Zeichensatzes
mysql:host=localhost;dbname=db_demo;charset=utf8mb4
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"
05 Zusammenfassung
Daten Der Zeichensatz des Tabellenfelds muss
sein. Dies ist lediglich erforderlich: das Gleiche, und sie sind alle utf8mb4
( Diese drei Parameter sind standardmäßig alle
character_set_client
character_set_connection
Der für die Verbindung mit der Datenbank verwendete Zeichensatz character_set_results
muss auch utf8mb4
utf8mb4
character_set_server
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Probleme mit dem MySQL-Zeichensatz (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!