- 締切済み
Fedora7+PHP+MySQLで文字化け
すみません、表題にてPHP側でCSVファイルをINSERTで登録していますが、どうしても文字化けしてしまいます。 Fedoracore7 PHP5.2.2 MySQL5.0.37 phpMyAdmin2.11.0 <php.ini> mbstring.internal_encodein = EUC-JP mb・・・output = EUC-JP <my.cnf> [client]、[mysqldump]、[mysql]ともに default-character-set = ujis [mysqld] default-character-set = ujis skip-character-set-client-handshake init-connect = SET NAMES ujis 色々と調べてEUC-JP(ujis)で統一してるつもりなのですが・・・ phpmyadminでは文字化けは解消してまして、こちらでレコードを登録すると、PHP側では文字化けなしで表示されます。 PHP側での書き込みは、 mb_convert_encoding($val,"EUC-JP","SJIS") で行っていますが、文字化けが解消されません。 どなたかご教授頂ければと思い、質問させて頂きました。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- saintandre
- ベストアンサー率31% (194/607)
#2です。 あと「init-connect」は接続ユーザーの権限によっては実行されないのであまり過信はできません。プログラムの方でしっかり実行た方がいいです。
- saintandre
- ベストアンサー率31% (194/607)
MySQLは文字コードの変換もDB側でやってくれますので便利ですがその分設定しなければいけない項目が多くて大変です。 おそらく「SET NAMES 'EUC-JP'」で処理前に文字コードを指定してしまうのが一番簡単です。 mysqli_query ( $link, "SET NAMES 'EUC-JP'" ); 設定を変更する場合は参考URLを参照してください。
- utano_m
- ベストアンサー率45% (14/31)
ソースコードファイルの文字コードは何になっていますか?もしShift-jisなら ソースコードの文字コードがSJISであっても変数内に入っている文字列値が SJISの文字コードであるとは限りません。 サーバーの内部文字コードで格納されていることが多いと思われます。 mb_convert_encoding($str, "EUC-JP"); とすることで内部文字コードからEUC-JPに変換してくれます。 それとMySQLをお使いになるならソースコード自体をEUC-JPで書くことをお奨めします。
補足
アドバイスありがとうございます。 PHPファイルのソース文字コードは、EUC-JPで保存しています。 再度確認して、各ファイルを保存しましたが、文字化けは解消しませんでした。
補足
mysqli_query ( $link, "SET NAMES 'EUC-JP'" ); でPHPに書いて行ったのですが、やはりダメでした。 他に何か試してみることはありますでしょうか?