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

締切り済みの質問

文字化けについて

現在PHPでの開発をおこなっています。
環境はWindows2000、Webサーバー『APACHE』、PHP『php-4.2.0-Win32』を使用しております。
Mysqlも接続でき、Web上でも表示ができるようになったのですが、文字化けを起こしてしまいます。以前カタカナの『ソ』が文字化けを起してしまったので、その時は『php.ini』ファイルの
・output_bufferring = Off
・default_charset = EUC-JP
・mbstring.http_input = auto
・mbstring.http_output = EUC_JP
・mbstring.internal_encoding = EUC_JP
・mbstring.substitute_character = none
・register_globals = On
と7箇所設定を変えました。自分で作成したソースもEUCで保存してるんですけど、
文字化けが起こってしまいます。
どうしたらよろしいでしょうか? お分かりになる方がおられましたらよろしくお願い致します。

投稿日時 - 2002-05-21 19:18:02

QNo.275451

すぐに回答ほしいです

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

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

回答(3)

ANo.3

今回の場合はおそらく「DBへの登録がsjisだった」と言う落ちではないかと想像できますが、その辺りどうでしょう?
もし違うのであれば、非常に興味があるので、ぜひご回答をお願いしたいと思います。

No.2の方の回答は、確かにそれでもいいと思いますが、もしDBの方をEUC-JPで管理してよいのであれば、MySQL側のencodingでの対応をお勧めします。
そうじゃないと、できあがったコードを後から見るときに嫌になりますよ(笑)

また、文字化けを起こしやすいパターンとして、その文字コード表にエスケープシークエンス(バックスラッシュ)等を含む場合が多いです。
その辺りを頭に入れておけば、こういうパターンは結構対応できます。
ようは慣れです。

投稿日時 - 2002-05-23 17:44:00

補足

私が行なったのは、今までphp.iniファイルは下記のように書いていたのですが、
・output_bufferring = Off
・default_charset = EUC-JP
・mbstring.http_input = auto
・mbstring.http_output = EUC_JP
・mbstring.internal_encoding = EUC_JP
・mbstring.substitute_character = none
・register_globals = On
2箇所を下記のように変更しました。
・default_charset = shift_jis
・mbstring.http_output = shift_jis

そして、ソースのHEAD部分に
<meta http-equiv="Content-Type" content="text/html;charset=shift_jis">
を記入する事により、文字化けは解消されました。

投稿日時 - 2002-05-24 15:38:10

ANo.2

表示したい文字が入った変数$strに対して、
$str = mb_convert_encoding($str, "EUC-JP");
のような操作を行えばよいと思います。

ただし、コンフィグのオプションで
--enable-mbstring
--enable-mbstr-enc-trans
を指定する必要があります。

詳しくは、PHPマニュアルを見てみてください

投稿日時 - 2002-05-22 22:49:56

お礼

解答ありがとうございました。

色々と試した結果、文字化けも起こらず、うまく動くようになりました。

投稿日時 - 2002-05-23 16:38:52

ANo.1

「ソ」の文字化けは有名ですね。
ちょっと検索すればすぐに出てきます。
結論から先に言うと、sjisのままだからです。

投稿日時 - 2002-05-22 11:02:47