※ ChatGPTを利用し、要約された質問です(原文:設定が間違っていないのに文字化けします)
設定が間違っていないのに文字化けします
このQ&Aのポイント
VirtualBoxの仮想環境のCentOS内でApatch+PHP+Mysqlの開発環境を作成していますが、文字化けの問題が発生しています。
phpmyadminで確認した時は日本語のデータが正しく表示されますが、phpでデータベースから取り出すと文字化けします。
phpのフォームから日本語を入力して表示すると正しく表示されるが、データベース内のデータが文字化けしています。
タイトル通りです。
VirtualBoxの仮想環境のCentOS内に
Apatch+PHP+Mysqlで開発環境を作っているのですが
どうにもこうにも文字化けします
症状としては
phpmyadminで確認した時、日本語のデータが正しく表示されるが
実際にphpでデータベースから取り出して表示すると???になります。
phpのフォームから日本語を入力してそのデータを表示すると正しく表示されるのですが
今度はデータベース内のデータが文字化けしています。
こちらのスクリプトでは文字化けしないのでPHPの設定ミスではないようです
http://tsuttayo.jpn.org/php/char_trn/
phpinfoの情報
Directive Local Value Master Value
mbstring.detect_order auto auto
mbstring.encoding_translation Off Off
mbstring.func_overload 0 0
mbstring.http_input auto auto
mbstring.http_output pass pass
mbstring.http_output_conv_mimetypes ^(text/|application/xhtml\+xml) ^(text/|application/xhtml\+xml)
mbstring.internal_encoding UTF-8 UTF-8
mbstring.language Japanese Japanese
mbstring.strict_detection Off Off
mbstring.substitute_character no value no value
Mysqlの設定もご覧の通りです
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
以下my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character_set_server=utf8
default-storage-engine=InnoDB
innodb_file_per_table
default-character-set=utf8
skip-character-set-client-handshake
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
スクリプトはちゃんとUTF-8BOMなしで作っています。
Mysqlのバージョンは 5.5.33です。
PHPのバージョンは 5.4.19です。
PDOのオプションも試しみましたがうまくいきませんでした。
非常に困っています。
回答いただけたら幸いです。
お礼
回答ありがとうございます。 試してみます。
補足
よくよく考えたらすでに全部対策済みでした・・・ init-connectのSET NAMEだけは非推奨なので行っていません。