Bei der Entwicklung von PHP+MYSQL-Websites treten bei der Ausgabe chinesischer Zeichen normalerweise verstümmelte Zeichen auf. Der Grund für dieses Problem liegt hauptsächlich in der Inkonsistenz zwischen der HTML-Inhaltskodierung, der PHP-Dateikodierung und der MySQL-Datenbankkodierung. Nehmen wir UTF-8 als Beispiel, um kurz zu beschreiben, wie die Beziehung zwischen den dreien vereinheitlicht werden kann.
Erstellen Sie eine neue PHP-Datei mit dem Namen test_charset.php und speichern Sie den folgenden Code in der Datei:
<?php $charset = "utf8"; $con = mysql_connect("localhost", "root", ""); mysql_query("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary", $con); mysql_select_db("ecshop", $con); $sql = "SELECT user_name, email FROM ecs_admin_user WHERE user_id = 4"; $result = mysql_query($sql, $con); $array = mysql_fetch_array($result, MYSQL_ASSOC); mysql_close($con); $name = $array["user_name"]; $email = $array["email"]; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <h1>你好, <?php echo $name; ?>!</h1> <h2>你的邮件是:<a href="mailto:<?php echo $email; ?>"><?php echo $email; ?></a></h2> </body> </html>
HTML-Inhaltskodierung
Nr. 22 oben Zeile:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hier geben wir an, dass der Browser beim Parsen von HTML die UTF-8-Kodierung verwendet. Wenn hier nichts angegeben wird, verwendet der Browser seine eigene Standardkodierung. Die Standardkodierung verschiedener Browser ist unterschiedlich. Beispielsweise ist IE6 GB2312 und FireFox UTF-8. Wenn der obige Code daher keine Zeile 22 enthält, wird er in FireFox normal angezeigt, in IE6 jedoch verstümmelte Zeichen.
PHP-Dateikodierung
Die PHP-Datei selbst muss ebenfalls eine konsistente Kodierung haben. Wie kann ich überprüfen, welche Kodierung Ihre PHP-Datei hat? Unter Windows können Sie dies einfach mit Notepad erledigen. Öffnen Sie die PHP-Datei mit Notepad und wählen Sie „Speichern unter...“ aus dem Menü „Datei“, wie unten gezeigt:
Am Ende der Datei befindet sich ein „ Wenn Sie im geöffneten Dialogfeld die Option „Kodierung“ auswählen, sehen Sie derzeit die aktuelle Kodierung der Datei. Wenn Sie zu einer anderen Kodierung wechseln möchten, wählen Sie diese aus dem Dropdown-Listenfeld aus und klicken Sie auf die Schaltfläche „Speichern“.
MySQL-Datenbankkodierung
Nach erfolgreicher Datenbankverbindung sollte so schnell wie möglich eine Einstellungskodierungsanweisung ausgeführt werden, z. B. Zeile 7 des obigen Codes. Eine Sache, die hier besonders beachtet werden muss, ist, dass UTF-8 die normale Schreibweise ist, in MySQL jedoch als UTF8 abgekürzt wird, ohne eine horizontale Linie in der Mitte. Zeile 7 oben setzt die Verbindungskodierung auf utf8 ($charset="utf8") anstelle von utf-8. Im Anhang finden Sie die vollständige Implementierung der ECShop-Einstellung der Verbindungskodierung als Referenz. Die Datei heißt include/cls_mysql.php.
function set_mysql_charset($charset) { /* 如果mysql 版本是 4.1+ 以上,需要对字符集进行初始化 */ if ($this->version > '4.1') { if (in_array(strtolower($charset), array('gbk', 'big5', 'utf-8', 'utf8'))) { $charset = str_replace('-', '', $charset); } if ($charset != 'latin1') { mysql_query("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary", $this->link_id); } } }