みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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")
で行っていますが、文字化けが解消されません。
どなたかご教授頂ければと思い、質問させて頂きました。
宜しくお願いします。

投稿日時 - 2007-09-18 23:12:51

QNo.3357238

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

#2です。

あと「init-connect」は接続ユーザーの権限によっては実行されないのであまり過信はできません。プログラムの方でしっかり実行た方がいいです。

投稿日時 - 2007-09-19 08:16:11

ANo.2

MySQLは文字コードの変換もDB側でやってくれますので便利ですがその分設定しなければいけない項目が多くて大変です。

おそらく「SET NAMES 'EUC-JP'」で処理前に文字コードを指定してしまうのが一番簡単です。

mysqli_query ( $link, "SET NAMES 'EUC-JP'" );



設定を変更する場合は参考URLを参照してください。

参考URL:http://dev.mysql.com/doc/refman/5.1/ja/charset-connection.html

投稿日時 - 2007-09-19 08:10:27

補足

mysqli_query ( $link, "SET NAMES 'EUC-JP'" );
でPHPに書いて行ったのですが、やはりダメでした。
他に何か試してみることはありますでしょうか?

投稿日時 - 2007-09-20 20:33:05

ANo.1

ソースコードファイルの文字コードは何になっていますか?もしShift-jisなら
ソースコードの文字コードがSJISであっても変数内に入っている文字列値が
SJISの文字コードであるとは限りません。
サーバーの内部文字コードで格納されていることが多いと思われます。

mb_convert_encoding($str, "EUC-JP");
とすることで内部文字コードからEUC-JPに変換してくれます。

それとMySQLをお使いになるならソースコード自体をEUC-JPで書くことをお奨めします。

投稿日時 - 2007-09-19 00:28:05

補足

アドバイスありがとうございます。
PHPファイルのソース文字コードは、EUC-JPで保存しています。
再度確認して、各ファイルを保存しましたが、文字化けは解消しませんでした。

投稿日時 - 2007-09-20 00:18:15

あなたにオススメの質問