プロが教える店舗&オフィスのセキュリティ対策術

タイトルの通りです。
mysqlの文字コードはutf8なのですが、phpはeucで出力しています。
DBに格納されている文字は文字化けせずに、きちんと表示されているのですが、出力すると「~」が「?」に化けて表示されてしまいます。

mysql_query(”SETNAMES ujis″);

mb_language("Japanese");
mb_internal_encoding("EUC-JP");
mb_http_input("auto");
mb_http_output("EUC-JP");
等も記述しておりますが、どうしても化けてしまいます。

回避方法等ご存知の方がおられましたら、ご教授お願いいたします。

A 回答 (2件)

処理系にWindowsが混入してるとそういう現象が起こるらしいですね。


Windowsが波ダッシュと全角チルダを混同してることと、euc-jpには全角
チルダなんて無いことが諸悪の根源とか。

> DBに格納されている文字は文字化けせずに、
UNICODE対応環境で見ても区別付きませんよ。見た目一緒だから。

どこかで全角チルダを波ダッシュに変換してやる必要があるわけですが、
適切な場所でeuc-jpのかわりにeuc-jp-winと唱えるのが効くって噂です。

参考URL:http://kaede.to/~canada/doc/ococaeo
    • good
    • 1
この回答へのお礼

>処理系にWindowsが混入してるとそういう現象が起こるらしいですね。
>Windowsが波ダッシュと全角チルダを混同してることと、euc-jpには全角
>チルダなんて無いことが諸悪の根源とか。
そうなんですか、とても勉強になります!

>UNICODE対応環境で見ても区別付きませんよ。見た目一緒だから。
そうなんですね…無知でお恥ずかしいです…。


>どこかで全角チルダを波ダッシュに変換してやる必要があるわけですが、
>適切な場所でeuc-jpのかわりにeuc-jp-winと唱えるのが効くって噂です。

ありがとうございます。参考URLのサイト、とても参考になりました。
SET NAMES eucjpms にしたら文字化けせずに表示されました!!
ずっと悩んでたので本当に大感謝です。
ありがとうございました!

お礼日時:2008/07/12 23:22

> mysql_query(”SETNAMES ujis″);



SET と NAMES の間に空白が必要だと思います。
空白を入れて文字化けしなくなるかどうかは、わかりません。
    • good
    • 0
この回答へのお礼

> SET と NAMES の間に空白が必要だと思います。

> mysql_query(”SETNAMES ujis″);
すみません。上記は他のサイトから持ってきたので、
私の記述は間違っておりません。

お礼日時:2008/07/12 22:09

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