echoで中国語が文字化けして表示される問題
PHPコードは以下の通りです:
echo "<li>ISBN:".$isbn."</br>书名:".$name."</br>作者:".$author."</br>";
データベースからデータを取得し、$isbnに代入します。問題を解決するにはどうすればよいでしょうか? ?
------解決策---------
mysql_set_charset("gbk") を追加する理由は問題ありません。 ?
echo "<meta http-equiv='Content-Type'' content='text/html; charset=utf-8'>";
これは不思議ではありません。だからデータベース内のものが UTF8 ではないように感じます
mysql_set_charset("gbk") は mysql_query("set names gbk" と等しいです) ); すでに一度転送してから、UTF8 に変換します。 。 。
------解決策---------
utf-8 エンコード
本のタイトル gbk環境では
涔﹀敕
と表示されます この時、データベースから読み込んだデータは正常に表示されています
データベースから読み込んだデータが表示されていることがわかりますgbk でエンコードされています。これは、utf-8 言語宣言を発行した後の文字化け状況によってサポートされる可能性があります
現在の状況によると、 $isbn = iconv('gbk', 'utf-8', $ が必要ですisn); 読み取られるデータは gbk から utf-8
に変換され、header('Content-type: text/html;charset=utf-8'); が必要です。 >この現象の原因は、 データベースは latin1
フィールドは utf8
挿入されたデータは gbkデータ挿入時に文字セットが宣言されていないため、gbk コンテンツが挿入されましたlatin1 としてフィールドに入力されました
読み取り時に文字セットも宣言されていなかったため、フィールド内のデータはそのまま latin1 として読み戻されました実際、これは正常であり、データベースは変更されていないはずですそもそも保管データ
そうでないと、車を倉庫に入れて取り出すとバイクになってしまって大変ではないでしょうか?
これがデータベース内の既存のデータを扱う唯一の方法です。諦めたくない場合は、トランスコーディングを行う必要があります (非常に面倒です)。
挿入するときは必ず注意してください。今後のデータの読み取り: set names first XXX コマンドを実行します。注意: この XXX は現在のデータの文字セット名です
たとえば、gbk データを挿入するには、mysql_query("set names gbk");
を使用します。 utf-8 に従ってデータを取得するには、mysql_query("set names utf8 ");
を使用します。