Über die Lösung für verstümmelte Zeichen, wenn PHP meineSQL-Datenbank liest
Wenn PHP MySQL liest, beziehen sich die folgenden Stellen auf den Zeichensatz.
1. Geben Sie beim Erstellen der Datenbanktabelle den Zeichensatz der Datenbanktabelle an. Zum Beispiel
- create table tablename
- (
- id int not null auto_increment,
- title varchar(20) nicht null,
- Primärschlüssel ('id')
- )DEFAULT CHARSET =UTF8;
Code kopieren 2. Der Zeichensatz von MySQL Es gibt drei wichtige Variablen in MySQL: Character_set_client, Character_set_results und Character_set_connection. Durch die Festlegung von „character_set_client“ teilen Sie MySQL mit, welche Codierungsmethode PHP in der Datenbank speichert. Indem Sie „character_set_results“ festlegen, teilen Sie MySQL mit, welche Art von codierten Daten PHP erhalten muss. Durch die Festlegung von „character_set_connection“ teilen Sie MySQL mit, welche Codierung für den Text in der PHP-Abfrage verwendet werden soll. 3. Nachdem Sie eine Verbindung zur Datenbank hergestellt haben , legen Sie die Standardzeichenkodierung fest, die bei der Übertragung von Zeichen zwischen Datenbanken verwendet wird. Verwenden Sie zum Festlegen mysqli::set_charset() oder mysqli::query('set name utf8'). Versuchen Sie, mysqli::set_charset(mysqli:set_charset) anstelle von „SET NAMES“ zu verwenden
- $db = new mysqli('localhost','user', ' passwd','database_name');
- $db->set_charset('utf8');
Code kopieren Beachten Sie, dass es utf8 ist, nicht utf-8 (Ein Problem hierbei ist, dass sowohl die Datenbank als auch PHP eine einheitliche Codierung haben, aber wenn die Funktion mysqli::set_charset() nicht aufgerufen wird , Die Daten enthalten immer noch verstümmelte Zeichen = utf8;SET Character_set_results = utf8; SET Character_set_connection = utf8; Setzen Sie a tag
> Code kopieren5. Zeichensatz, der von PHP-Textdateien verwendet wird. Sie können vim verwenden, um die Datei unter Linux zu öffnen. Geben Sie
ein, um den von der Datei verwendeten Zeichensatz anzuzeigen Datei
Um sicherzustellen, dass kein verstümmelter Code vorhanden ist, müssen Sie sicherstellen, dass die Codierung der Datei selbst, die in HTML angegebene Codierung und PHP MySQL anweisen, die Codierung zu vereinheitlichen (einschließlich Character_set_client und Character_set_results). ). Verwenden Sie auch die Funktion mysqli:set_charset() oder „SET NAMES“.
Als Antwort auf die Frage nach „3“ habe ich mehrere Beispiele geschrieben, um die Ergebnisse des Festlegens bzw. Nicht-Festlegens des Zeichensatzes nach der Verknüpfung mit der Datenbank zu testen. Testumgebung Ubuntu 12.04, MySQL 5.5, PHP 5.5.7.
Die Ergebnisse lauten wie folgt:
(1) Der Zeichensatz der Datenbanktabelle ist utf8, ohne den Satznamen utf8 zu verwenden
kann normal eingefügt und gelesen werden. Chinesisch wird ausgegeben, aber in MySQL werden verstümmelte Zeichen angezeigt
(2) Der Zeichensatz der Datenbanktabelle ist utf8
zum normalen Einfügen und Lesen von Chinesisch, MySQL Es wird korrekt angezeigt in
(3) Der Zeichensatz der Datenbanktabelle ist nicht utf8. Verwenden Sie den Satznamen utf8
um es in MySQL anzuzeigen, und alle Zeichen werden als Fragezeichen gelesen.
PHP-Tutorial ausgewählt aus Zero Zero H5
Das Obige stellt die Lösung für den verstümmelten Code beim Lesen der MySQL-Datenbank in PHP vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.