※ ChatGPTを利用し、要約された質問です(原文:PHP+MySQLいくら解決策をやっても文字化け)
PHP+MySQL文字化け問題の解決策を知りたい
2010/12/09 13:24
このQ&Aのポイント
PHPやMySQLで日本語の文字化け問題が発生しており、解決策を探しています。MAMPを使用して開発を行っており、ターミナルやPHPmyadminでの日本語表示、MySQLからのデータ取得、PHPからのデータ挿入などが文字化けしてしまいます。
既に様々な試みを行ってきましたが問題解決には至っていません。環境はMac OS X 10.6.5 snow leopard、MAMP1.9.2、PHP5.3.2、MySQL5.1.44、phpMyAdmin3.2.5、Apache2.0.63です。具体的な解決策の一例として、my.cnfやphp.iniの設定変更、<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />の追加などを試しました。
しかし、これらの設定変更後にMAMPを再起動しても問題は解消しませんでした。ターミナルでの文字コード確認では、character_set_client、character_set_connection、character_set_database、character_set_resultsなどの値がutf8になっていることが確認できます。しかし、それでも文字化けは発生しています。この文字化け問題の解決策を教えていただけると助かります。
PHP、MySQL初心者です。
MAMPを使って開発を行っているのですが、
どうやっても
ターミナル内の日本語
PHPmyadminでinsertした日本語
MySQLから吸い出したPHPデータの日本語(apacheを使ってローカルサーバーで確認)
PHPからinsertした日本語
が文字化けをし、 ??????? みたいな感じになります。
色々調べできる限りはやりましたがダメです。
---------------------------------------------------------------
環境は
Mac OS X 10.6.5 snow leopard
MAMP1.9.2
PHP5.3.2
MySQL5.1.44
phpMyAdmin3.2.5
Apache2.0.63
---------------------------------------------------------------
行った解決策
(1)
/Applications/MAMP/Library/share/mysql/
にあるmy-medium.cnfをコピー
/Applications/MAMP/db/mysql/
に入れmy.cnfにリネーム
[mysqld]
default-character-set=utf8
init-connect=SET NAMES utf8
character-set-server = utf8
collation-server = utf8_general_ci
skip-character-set-client-handshake
[mysql]
default-character-set=utf8
を追記
(2)
MAMP/conf/php5.3
にあるphp.iniを
変更前:;default_charset = “iso-8859-1″
変更後:default_charset = “UTF-8″
変更前:magic_quotes_gpc = On
変更後:magic_quotes_gpc = Off
変更前:;mbstring.language = Japanese
変更後:mbstring.language = Japanese
変更前:;mbstring.internal_encoding = EUC-JP
変更後:mbstring.internal_encoding = UTF-8
変更前:;mbstring.http_input = auto
変更後:mbstring.http_input = auto
変更前:;mbstring.detect_order = auto
変更後:mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
(3)
phpデータ内のheadに
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
を記述
もちろん上記の設定後にMAMPの再起動等しております。
ちなみに
ターミナルにて
show variables like "char%";
を行ったところ
+--------------------------+-----------------------------------+
| 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 | /Applications/MAMP/Library/share/mysql/charsets/
となっております。
どうしたら文字化けが治るのでしょうか?
かなり調べましたが、つんでます。
お願いします。
質問の原文を閉じる
質問の原文を表示する
お礼
ありがとうございます。 とりいそぎphp.iniとmy.cnfの設定は変えず、 新規データベースをphpmyadminで作り、 確認した所、日本語表示されました。 たぶんこれで問題ないなと思いましたが php.iniを見直し mbstring.http_output = pass を念のため mbstring.http_output = UTF-8 に変えました。 これでも問題なく日本語表示されました。(変える前から問題なかったので必要あるのかどうかわかりませんが。。) ただ、一点 ターミナルから見た時にレコードの日本語は 表示はされているのですが、 新規日本語入力をすると 文字化けします。(ちゃんと出る字と文字化けする字とあります) これはすべてphpadminから入れていけばいいのかなと思いましたが 今後、何か問題でてきます?