ホームページ  >  記事  >  バックエンド開発  >  PHP中国語文字化けの分類と解決策

PHP中国語文字化けの分類と解決策

伊谢尔伦
伊谢尔伦オリジナル
2016-11-26 16:31:061059ブラウズ

PHP + MYSQL Web サイト開発では、通常、ブラウザーが中国語の文字を出力するときに文字化けが発生します。この問題の主な原因は、HTML コンテンツのエンコード、PHP ファイルのエンコード、および MySQL データベースのエンコードの不一致です。 UTF-8 を例として、3 つの間の関係を統合する方法を簡単に説明します。

test_charset.php という名前の新しい PHP ファイルを作成し、次のコードをファイルに保存します:

<?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 コンテンツのエンコード

上の 22 行目:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

ここでは、ブラウザが HTML を解析することを指定します。UTF-8 を使用します。エンコーディング。ここで指定しない場合、ブラウザは独自のデフォルトのエンコーディングを使用します。たとえば、IE6 は GB2312、FireFox は UTF-8 など、ブラウザごとにデフォルトのエンコードは異なります。そのため、上記コードの22行目が無い場合、FireFoxでは正常に表示されますが、IE6では文字化けして表示されます。

PHP ファイルのエンコーディング

PHP ファイル自体も一貫したエンコーディングである必要があります。 PHP ファイルのエンコーディングを確認するにはどうすればよいですか? Windows では、メモ帳を使用して簡単に処理できます。以下に示すように、メモ帳で PHP ファイルを開き、[ファイル] メニューから [名前を付けて保存...] を選択します。

PHP中国語文字化けの分類と解決策

現在開いているダイアログ ボックスの下部に [エンコーディング] オプションがあります。 「ファイルがエンコードされました」を参照してください。別のエンコードに変更する場合は、ドロップダウン リスト ボックスから選択し、「保存」ボタンをクリックします。

MySQL データベースのエンコーディング

データベース接続が成功したら、上記のコードの 7 行目など、エンコーディングの設定命令をできるだけ早く実行する必要があります。ここで特に注意が必要なのは、UTF-8 が通常の書き方ですが、MySQL では真ん中に横線を入れずに UTF8 と省略して表記されることです。上記の 7 行目は、接続エンコーディングを utf-8 ではなく utf8 ($charset="utf8") に設定します。参考までに、ECShop 設定接続エンコーディングの完全な実装をここに添付します。ファイルは include/cls_mysql.php です。

りー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。