10秒目をつむったら…

PHPとDB(MySQL)を使用したアプリケーションを作成しています。

しかし特定の文字(表や能など)をDBに入力し再度PHPで表示すると文字化けします。

調べて対策を行いましたが改善されません。

(対策)
DBに格納する前にデータをすべてmb_convert_encoding($goo, "EUC-JP", "SJIS");でエンコード

読み込む際にはmb_convert_encoding($goo, "SJIS", "EUC-JP")と戻す。

又、magic_quotes_gpcもoffに。

しかしながら一向に改善されません。どうぞよろしくお願いいたします。

A 回答 (3件)

以下をご確認願います


1)php.ini 設定ですが、マルチバイトに関する設定はどうなっていますか?
通常はPHPの内部エンコーディングはEUC-JPが推奨ですので
2)PHPスクリプト,HTMLファイルの文字コードはすべてEUC-JPにしておきます。
HTMLファイルのメタ属性で
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
と追加しておくといいでしょう。
文字化けの大半は上記が正しく指定されていないのに原因があります。
.htaccess設定が可能ならば、
php_flag mbstring.http_input=EUC-JP
php_flag mbstring.http_output=EUC-JP
php_flag mbstring.internal_encoding=EUC-JP
php_flag mbstring.encoding_translation=Off
を指定しましょう。(この設定の場合にはHTML,PHPともにEUC-JPの漢字コードでファイル作成の必要あり)
EUC-JPでの日本語表示はブラウザ側で自動的に判別して表示しますので、心配ありません。
また、データベースの内部文字の扱いはたぶん、EUC-JPとは思いますが、念のためご確認をした法がいいかと。

この回答への補足

遅くなってすいません。

.htaccessの設定をし、php.iniも別のサイトを参考に設定し直しましたら文字化けが解消いたしました。

本当にありがとうございました。

補足日時:2006/01/17 20:50
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>php.ini 設定ですが、マルチバイトに関する設定はどうなっていますか?

magic_quotes_gpc = off のみとなっています。

><meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
と追加しておくといいでしょう。

はい、追加しましたがだめでした。文字化けは特定な漢字のみです。

ご指摘いただきましたhtaccess設定ですが、後ほど行い報告させていただきます。

お礼日時:2006/01/12 22:23

表や脳などのSJISコードの中にはバックスラッシュに相当するコードが含まれています。

そのため文字化けが起こります。
addslashes()関数を用いて表示する文字中のバックスラッシュをエスケープするとよいのではないでしょうか?

magic_quotes_gpc = off
が設定されているということですので、表示のときにエスケープしたバックスラッシュが見えるということはないと思います。

参考URL:http://jp2.php.net/manual/ja/function.addslashes …
    • good
    • 0
この回答へのお礼

なるほど、addslashes()関数ですね。

大変参考になりました。ありがとうございました。

お礼日時:2006/01/17 20:53

DBはsjisで使わなければならないのですか?



DBもEUCでエンコーディングするようにしたら大丈夫だと思いますが。SJISはよく文字化けるので自分は使いません。

この回答への補足

回答ありがとうございます。

ごめんなさい、知識不足でよく分からないのですがsjisでDBに格納ということですか?

又、SJISをご使用にならないとのことですが、SJISを使わないで日本語を表示するにはどうしたらいいのでしょうか?

よろしくお願いいたします。

補足日時:2006/01/11 19:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!