Heim > Backend-Entwicklung > PHP-Tutorial > So lösen Sie das Problem verstümmelter Zeichen, wenn PHP die MySQL-Datenbank liest

So lösen Sie das Problem verstümmelter Zeichen, wenn PHP die MySQL-Datenbank liest

一个新手
Freigeben: 2023-03-15 22:26:01
Original
1410 Leute haben es durchsucht

Über die Lösung für verstümmelte Zeichen, wenn PHP die MySQL-Datenbank liest

Wenn PHP MySQL liest, betreffen die folgenden Stellen 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) not null,
primary key ('id')
)DEFAULT CHARSET =UTF8;
Nach dem Login 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. Legen Sie nach dem Herstellen der Verbindung mit der Datenbank 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');
    Nach dem Login kopieren

Code kopieren
Beachten Sie, dass es utf8 und nicht utf-8 ist
(Das Problem hierbei ist, dass sowohl die Datenbank als auch PHP eine einheitliche Codierung haben, aber Wenn nicht, werden beim Aufrufen der Funktion mysqli::set_charset() beim Lesen der Daten immer noch verstümmelte Zeichen angezeigt >.

SET character_set_client = utf8;
SET character_set_results = utf8; 
SET character_set_connection = utf8; 
)
Nach dem Login kopieren
4. Legen Sie den von der HTML-Seite verwendeten Zeichensatz fest.
  • <meta http-equiv="content-type" content="text/html; charset=utf-8">
    Nach dem Login kopieren

    复制代码
    5. php文本文件所使用的字符集。
    在linux下可以用vim打开文件,输入
    :set encoding
    查看文件使用的字符集

    要保证不乱码,需要保证文件自身的编码,HTML里指定的编码,PHP告诉Mysql的编码(包括character_set_client和character_set_results)统一。同时使用mysqli:set_charset()函数或”SET NAMES”。

    针对“3”后面的问题,写了几个例子,测试链接数据库后,设置和不设置字符集时的结果。测试环境Ubuntu 12.04,MySQL 5.5,php 5.5.7。
    结果如下:
    (1) 数据库表字符集是utf8,不使用set names utf8
    能正常插入、读出中文,但是在mysql中显示乱码

    (2) 数据库表字符集是utf8,使用set names utf8
    能正常插入、读出中文,mysql中显示正确

    (3) 数据库表字符集不是utf8,使用set names utf8
    mysql中显示,读出都是问号。

    Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter Zeichen, wenn PHP die MySQL-Datenbank liest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage