PHP コードは次のとおりです:
echo "<li>ISBN:".$isbn."</br>书名:".$name."</br>作者:".$author."</br>";
echo "<meta http-equiv='Content-Type'' content='text/html; charset=utf-8'>";
まだ同じです
phpmyadmin ではどのように表示されますか?
utf8_general_ci
データを取得します前に追加します: mysql_query("set names utf8");
//以上连接数据库mysql_set_charset("gbk");$result = mysql_query("SELECT * FROM book_list LIMIT 0 , 30" ); //查询数据库while ($bookInfo = mysql_fetch_array($result)){ //返回查询结果到数组 $isbn = $bookInfo["B_ISBN"]; //将数据从数组取出 $name = $bookInfo["B_name"]; $author = $bookInfo["B_author"];echo "<li>ISBN:".$isbn."</br>书名:".$name."</br>作者:".$author."</li>"; //输出数据}
データを取得する前に、次を追加します: mysql_query("set names utf8");
//以上连接数据库mysql_set_charset("gbk");$result = mysql_query("SELECT * FROM book_list LIMIT 0 , 30" ); //查询数据库while ($bookInfo = mysql_fetch_array($result)){ //返回查询结果到数组 $isbn = $bookInfo["B_ISBN"]; //将数据从数组取出 $name = $bookInfo["B_name"]; $author = $bookInfo["B_author"];echo "<li>ISBN:".$isbn."</br>书名:".$name."</br>作者:".$author."</li>"; //输出数据}
コメントアウト
//mysql_set_charset("gbk");
echo "<meta http-equiv='Content-Type'' content='text/html; charset=utf-8'>";
// 这一句改成这样echo "<li>ISBN:".$isbn."</br>书名:".iconv('GBK','UTF-8',$name)."</br>作者:".iconv('GBK','UTF-8',$author)."</li>"; //输出数据
これは不思議ではないので、データベース内のものが UTF8 ではないと思います
mysql_set_charset("gbk"); mysql_query("set names gbk"); すでに一度変換されているので、再度 UTF8 に変換します。 。 。
gbk環境では、utf-8でエンコードされた書籍タイトルは「涔??」と表示されます
データベースから読み込んだデータがgbkエンコードされていることがわかります。これは、utf-8 言語宣言が発行された後、それを証明するために文字化けした状況が逆転した可能性があります
現在の状況によると、$isbn = iconv('gbk', 'utf-8', $isbn) が必要です。 ; 読み取られるデータは gbk から utf-8 へのエンコーディング変換を行います
と言語宣言のヘッダーが必要です
データベースは latin1 の
フィールドは utf8 です
挿入されたデータは gbk です
データを挿入するときに文字セットが宣言されていなかったため、gbk の内容が latin1 としてフィールドに挿入されました
文字セット読み取り時にも宣言されていないため、フィールド内のデータはそのまま latin1 として読み戻されます
実際、これは、そもそもデータベースが保存されているデータを変更するべきではありません
それ以外の場合は、それが車の場合です。を倉庫に入れて取り出すとバイクになってしまい、めちゃくちゃになります。
データベース内の既存のデータに対しては、これが唯一の方法です。諦めたくない場合は、トランスコーディングを行う必要があります (非常に面倒です)
将来的にデータを挿入および読み取るときは、次の点に注意する必要があります。 set names XXX コマンドを実行します。注意: この XXX は現在のデータの文字セット名です
たとえば、gbk データを挿入するには、mysql_query("set names gbk") を使用します。
データを utf-8 として取得するには、次を使用します。 mysql_query("セット名 utf8");
gbk環境では、utf-8でエンコードされた書籍タイトルは「涔??」と表示されます
このとき、データベースから読み込んだデータは正常に表示されます
データベースから読み込んだデータがgbkエンコードされていることがわかります。これは、utf-8 言語宣言が発行された後、それを証明するために文字化けした状況が逆転した可能性があります
現在の状況によると、$isbn = iconv('gbk', 'utf-8', $isbn) が必要です。 ; 読み取られるデータは gbk から utf-8 へのエンコーディング変換を行います
と言語宣言のヘッダーが必要です
この現象は次のとおりです。
データベースは latin1 の
フィールドは utf8 です
挿入されたデータは gbk です
データを挿入するときに文字セットが宣言されていなかったため、gbk の内容が latin1 としてフィールドに挿入されました
文字セット読み取り時にも宣言されていないため、フィールド内のデータはそのまま latin1 として読み戻されます
実際、これは、そもそもデータベースが保存されているデータを変更するべきではありません
それ以外の場合は、それが車の場合です。を倉庫に入れて取り出すとバイクになってしまい、めちゃくちゃになります。
データベース内の既存のデータに対しては、これが唯一の方法です。諦めたくない場合は、トランスコーディングを行う必要があります (非常に面倒です)
将来的にデータを挿入および読み取るときは、次の点に注意する必要があります。 set names XXX コマンドを実行します。注意: この XXX は現在のデータの文字セット名です
たとえば、gbk データを挿入するには、mysql_query("set names gbk") を使用します。
データを utf-8 として取得するには、次を使用します。 mysql_query("set names utf8");
なぜ mysql_set_charset("gbk"); を追加する必要があるのですか?
これは不思議ではないので、データベース内のものが UTF8 ではないと思います
mysql_set_charset("gbk");に等しい mysql_query("set names gbk" ); すでに一度変換されています。再度 UTF8 に変換してください。 。 。