※ ChatGPTを利用し、要約された質問です(原文:文字化けが発生する)
文字化けが発生する
このQ&Aのポイント
文字化けが発生する原因として、Apache 2.0.54とPHP 5.0.4およびMySQL 4.1.14が使用されたテスト環境で、文字コードの統一が行われていないことが挙げられます。テストデータがUTF-8に変換されていないため、PHPスクリプトでデータが正しく表示されず、文字化けが発生してしまいます。
文字化けの原因は、PHPスクリプトのデータ部分が「?」に変わってしまうことです。ブラウザの文字コードを変えても解決しないため、データ部分のエンコードを調べてみると、「ASCII」になっていました。MySQLの環境変数のcharacter関係の変数はすべてUTF-8に設定されています。
データをUTF-8で出力するには、テストデータをUTF-8に変換してからMySQL 4.1.14にインポートする必要があります。また、PHPスクリプトでデータを表示する際に、適切なエンコーディングを行う必要があります。
Apache 2.0.54、PHP 5.0.4それから、MySQL 4.1.14でPHPのテスト環境をWindowsXP上に作りました。PHPとMySQLの設定ファイルで文字コードを、UTF-8に統一してほかのMySQL(4.0.12)からダンプしたファイルをUTF-8に変換した後にMySQL 4.1.14にインポートしました。
phpMyAdmin上からは文字化けなしにインポートしたファイルが見れるのですが、なぜか自分で書いたPHPスクリプトではデータ部分がすべて「?」に変わってしまいます。ブラウザの文字コードを変えても?で、試しにそのデータ部分のエンコードをPHP上から調べてみると「ASCII」になっていました。また、MySQLの環境変数のcharacter関係の変数はすべてUTF-8になっています。
データをUTF-8で出力したいのですが、どのようにすればいいでしょうか?
下が、コマンドラインから変数を参照した結果です。
mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+------+
| Variable_name | Value|
+--------------------------+------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\
MySQL\MySQL Server 4.1\share\charsets/ |
+--------------------------+------+
お礼
レスありがとうございます。(遅れてごめんなさい) "SET NAMES utf8" を使ったところ、きちんと表示できました。一度、ユーザ会のFAQは見たのですが、"SET NAMES ..."の部分は見落としていました・・・。