Wie löse ich den chinesischen verstümmelten Code in PHP MySQL?
Lösung für verstümmelten PHP-MySQL-Code: Verwenden Sie zuerst das Meta-Tag, um die „Seitendeklarationskodierung“ auf GB2312 und UTF-8 festzulegen. Verwenden Sie dann mysql_query(), um die „Datenbankverbindungskodierung“ festzulegen, und stellen Sie sicher, dass die „Seitendeklaration“ festgelegt ist „Kodierung“ und „Datenbankverbindungskodierung“ sind identisch.
Empfohlene Tutorials: MySQL-Video-Tutorial, PHP-Video-Tutorial
Im Allgemeinen gibt es zwei Gründe für das Auftreten verstümmelter Zeichen. Der erste ist auf den Fehler bei der Codierung (Zeichensatz) zurückzuführen , was dazu führt, dass der Browser zum Parsen die falsche Codierung verwendet, was zu einem Bildschirm voller unordentlicher „himmlischer Bücher“ führt. Zweitens wird die Datei mit der falschen Codierung geöffnet und dann beispielsweise eine Textdatei in GB2312 gespeichert , wurde jedoch in der UTF-8-Kodierung geöffnet und gespeichert. Um das obige Problem mit verstümmeltem Code zu lösen, müssen Sie zunächst wissen, welche Aspekte der Entwicklung eine Codierung beinhalten:
1. Dateicodierung: bezieht sich auf die Codierung, in der die Seitendatei (.html, .php usw.) selbst gespeichert wird. Notepad und Dreamweaver erkennen beim Öffnen der Seite automatisch die Dateikodierung, sodass es weniger Probleme gibt. Allerdings erkennt ZendStudio die Kodierung nicht automatisch. Es öffnet die Datei nur in einer bestimmten Kodierung entsprechend der Konfiguration der Einstellungen. Wenn Sie die Datei während der Arbeit versehentlich mit der falschen Kodierung öffnen, werden beim Speichern verstümmelte Zeichen angezeigt es nach der Änderung.
2. Kodierung der Seitendeklaration: Im HTML-Code HEAD können Sie verwenden. (Dieser Satz muss geschrieben werden in
mysql_query("SET NAMES GBK"); //或 mysql_query("SET NAMES GB2312");
mysql_query("SET NAMES UTF8");
Hinweis: Tatsächlich ist die Dateneingabe und -ausgabe von MYSQL komplizierter als oben erwähnt. In der MYSQL-Konfigurationsdatei my.ini sind zwei Standardcodierungen definiert, die in [client-character-set] und default- angegeben sind. Zeichensatz in [mysqld] legt jeweils die von der Clientverbindung und der Datenbank intern verwendete Codierung fest. Die oben angegebene Codierung ist tatsächlich der Befehlszeilenparameter „character_set_client“, um dem MYSQL-Server mitzuteilen, welche Codierung Die empfangenen Client-Daten stimmen nicht mit der Codierung der Datei selbst überein, da der Künstler die Seite erstellt Sie sehen im Browser verstümmelte Zeichen. Meistens wird dies durch die Behebung kleinerer Fehler nach der Veröffentlichung, das Öffnen der Seite in der falschen Codierung und das anschließende Speichern verursacht. Oder Sie verwenden eine FTP-Software, um Dateien direkt online zu ändern, z. B. CuteFTP. Aufgrund einer falschen Software-Kodierungskonfiguration wird die falsche Kodierung konvertiert. 3. Einige Freunde, die virtuelle Hosts gemietet haben, stellten fest, dass die oben genannten drei Kodierungen immer noch verstümmelt waren. Wenn die Webseite beispielsweise in GB2312 kodiert ist, wird sie beim Öffnen von Browsern wie dem IE immer als UTF-8 erkannt. Der HEAD der Webseite hat bereits angegeben, dass es sich um GB2312 handelt, nachdem die Browserkodierung manuell auf GB2312 geändert wurde , die Seite wird normal angezeigt. Der Grund dafür ist, dass der Server-Apache die globale Standardkodierung des Servers festlegt und AddDefaultCharset UTF-8 in httpd.conf hinzufügt. Zu diesem Zeitpunkt sendet der Server zuerst den HTTP-Header und seine Priorität ist höher als die auf der Seite deklarierte Codierung. Natürlich erkennt der Browser ihn falsch. Es gibt zwei Lösungen. Administratoren sollten AddDefaultCharset GB2312 zur Konfigurationsdatei ihrer eigenen virtuellen Maschine hinzufügen, um die globale Konfiguration zu überschreiben, oder sie in .htaccess in ihrem eigenen Verzeichnis konfigurieren.
Lösung für verstümmelte Codes
Um das Problem des verstümmelten Codes zu lösen, müssen Sie zunächst herausfinden, welche Codierung Ihre Datenbank verwendet. Wenn nicht angegeben, ist der Standardwert latin1.Die drei Zeichensätze, die wir am häufigsten verwenden, sollten gb2312, gbk und utf8 sein.
那么我们如何去指定数据库的字符集呢?下面也gbk为例
【在MySQL Command Line Client创建数据库】
mysql> CREATE TABLE `mysqlcode` ( -> `id` TINYINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , -> `content` VARCHAR( 255 ) NOT NULL -> ) TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci; Query OK, 0 rows affected, 1 warning (0.03 sec) mysql> desc mysqlcode; +---------+-----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+-----------------------+------+-----+---------+----------------+ | id | tinyint(255) unsigned | NO | PRI | | auto_increment | | content | varchar(255) | NO | | | | +---------+-----------------------+------+-----+---------+----------------+ 2 rows in set (0.02 sec)
其中后面的TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;
就是指定数据库的字符集,COLLATE (校勘),让mysql同时支持多种编码的数据库。
当然我们也可以通过如下指令修改数据库的字符集
alter database da_name default character set 'charset'.
客户端以 gbk格式发送 ,可以采用下述配置:
SET character_set_client='gbk' SET character_set_connection='gbk' SET character_set_results='gbk'
这个配置就等价于 SET NAMES 'gbk'。
现在对刚才创建的数据库操作
mysql> use test; Database changed mysql> insert into mysqlcode values(null,'php爱好者'); ERROR 1406 (22001): Data too long for column 'content' at row 1
没有指定字符集为gbk,插入时出错
mysql> set names 'gbk'; Query OK, 0 rows affected (0.02 sec)
指定字符集为 gbk
mysql> insert into mysqlcode values(null,'php爱好者'); Query OK, 1 row affected (0.00 sec)
插入成功
mysql> select * from mysqlcode; +----+-----------+ | id | content | +----+-----------+ | 1 | php爱好着 | +----+-----------+ 1 row in set (0.00 sec)
在没有指定字符集gbk时读取也会出现乱码,如下
mysql> select * from mysqlcode; +----+---------+ | id | content | +----+---------+ | 1 | php??? | +----+---------+ 1 row in set (0.00 sec)
【在phpmyadmin创建数据库,并指定字符集】
表类型根据自己需要选,这里选MyISAM(支持全文检索);
整理选择 gbk_chinese_ci 也就是gbk字符集
gbk_bin 简体中文, 二进制。gbk_chinese_ci 简体中文, 不区分大小写。
在刚才创建的数据库插入数据库
再浏览时发现是乱码
为什么呢?是因为数据库为gbk字符集,而我们操作时没有指定为gbk
回到数据库首页
可以看到 mysql 连接校对默认的latin1_bin。我们将其改为gbk_chinese_ci
再插入一条数据。看,这条已经正常了
【解决php读取数据库乱码】
仍以数据库mysqlcode为例
<?php $conn = mysql_connect("localhost","root","89973645"); mysql_query("set names 'gbk'");//这就是指定数据库字符集,一般放在连接数据库后面就系了 mysql_select_db("test"); $sql = "select * from mysqlcode"; $result = mysql_query($sql,$conn); ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>mysql 字符编码</title> </head> <body> <table width="300" height="32" border="1" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="71" align="center">id</td> <td width="229" align="center">内容</td> </tr> <?php while($row = mysql_fetch_assoc($result)){ echo " <tr> <td align=/"center/">".$row['id']."</td> <td>".$row['content']."</td> </tr>"; }?> </table> </body> </html> <?php mysql_free_result($result);?>
如果我们将mysql_query("set names 'gbk'");
注释掉,肯定时乱码
加上那句又正常了
一句
你数据库用什么编码,在对数据库操作之前就set names '你的编码';
更多编程相关知识,请访问:编程学习网站!!
Das obige ist der detaillierte Inhalt vonWie löse ich den chinesischen verstümmelten Code in PHP MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



MySQL ist für Anfänger geeignet, da es einfach zu installieren, leistungsfähig und einfach zu verwalten ist. 1. Einfache Installation und Konfiguration, geeignet für eine Vielzahl von Betriebssystemen. 2. Unterstützung grundlegender Vorgänge wie Erstellen von Datenbanken und Tabellen, Einfügen, Abfragen, Aktualisieren und Löschen von Daten. 3. Bereitstellung fortgeschrittener Funktionen wie Join Operations und Unterabfragen. 4. Die Leistung kann durch Indexierung, Abfrageoptimierung und Tabellenpartitionierung verbessert werden. 5. Backup-, Wiederherstellungs- und Sicherheitsmaßnahmen unterstützen, um die Datensicherheit und -konsistenz zu gewährleisten.

Erstellen Sie eine Datenbank mit Navicat Premium: Stellen Sie eine Verbindung zum Datenbankserver her und geben Sie die Verbindungsparameter ein. Klicken Sie mit der rechten Maustaste auf den Server und wählen Sie Datenbank erstellen. Geben Sie den Namen der neuen Datenbank und den angegebenen Zeichensatz und die angegebene Kollektion ein. Stellen Sie eine Verbindung zur neuen Datenbank her und erstellen Sie die Tabelle im Objektbrowser. Klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie Daten einfügen, um die Daten einzufügen.

MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

Schritte zur Durchführung von SQL in Navicat: Verbindung zur Datenbank herstellen. Erstellen Sie ein SQL -Editorfenster. Schreiben Sie SQL -Abfragen oder Skripte. Klicken Sie auf die Schaltfläche Ausführen, um eine Abfrage oder ein Skript auszuführen. Zeigen Sie die Ergebnisse an (wenn die Abfrage ausgeführt wird).

Sie können eine neue MySQL -Verbindung in Navicat erstellen, indem Sie den Schritten folgen: Öffnen Sie die Anwendung und wählen Sie eine neue Verbindung (Strg N). Wählen Sie "MySQL" als Verbindungstyp. Geben Sie die Hostname/IP -Adresse, den Port, den Benutzernamen und das Passwort ein. (Optional) Konfigurieren Sie erweiterte Optionen. Speichern Sie die Verbindung und geben Sie den Verbindungsnamen ein.

Die Zukunft von PHP wird erreicht, indem sich an neue Technologietrends angepasst und innovative Funktionen eingeführt werden: 1) Anpassung an Cloud Computing, Containerisierung und Microservice -Architekturen, Unterstützung von Docker und Kubernetes; 2) Einführung von JIT -Compilern und Aufzählungsarten zur Verbesserung der Leistung und der Datenverarbeitungseffizienz; 3) die Leistung kontinuierlich optimieren und Best Practices fördern.

Häufige Gründe, warum Navicat keine Verbindung zur Datenbank und ihren Lösungen herstellen kann: 1. Überprüfen Sie den laufenden Status des Servers. 2. Überprüfen Sie die Verbindungsinformationen; 3. Passen Sie die Firewall -Einstellungen ein; 4. Konfigurieren Sie den Remote -Zugriff; 5. Fehlerbehebung mit Netzwerkproblemen; 6. Berechtigungen überprüfen; 7. Sicherheitskompatibilität sicherstellen; 8. Fehlerbehebung bei anderen Möglichkeiten.

Häufige Fehler und Lösungen beim Anschließen mit Datenbanken: Benutzername oder Kennwort (Fehler 1045) Firewall -Blocks -Verbindungsverbindung (Fehler 2003) Timeout (Fehler 10060) Die Verwendung von Socket -Verbindung kann nicht verwendet werden (Fehler 1042).
