Heim  >  Artikel  >  Backend-Entwicklung  >  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

一个新手
一个新手Original
2017-09-12 10:33:201391Durchsuche

Ü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;

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');

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; 
)
4. Legen Sie den von der HTML-Seite verwendeten Zeichensatz fest.
  • <meta http-equiv="content-type" content="text/html; charset=utf-8">

复制代码
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!

Stellungnahme:
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