EUC-JPフォームで文字化け

add to hatena hatena.comment 0 user add to del.icio.us 0 user add to livedoor.clip 0 user

現在EUC-JPでサイトを作っているのですが、そこで文字化けに見舞われました。

フォームに「暴」「貼」などを入力してPOSTすると、コードで受け取った時点で化けてしまいます。
よくわからないまま解決したので、メモ。

「暴」「貼」「能」。こいつらが何故化けるか。
こいつらが化けるのはよくある話で。こちらなどに詳しいです。
これらの文字はSJIS上では2バイト目が「5C」というコードになっている。
「5C」は単独だと「\」をあらわすコードであり、プログラムがエスケープだと勘違いして、文字化けを引き起こすと。

さて、今回の環境を見てみます。
サイトはレンタルサーバ上に構築しています。サーバのmbstringの設定は、以下のとおり。

magic_quotes_gpc			On
mbstring.detect_order			auto
mbstring.encoding_translation		On
mbstring.func_overload			0
mbstring.http_input			auto
mbstring.http_output			pass
mbstring.internal_encoding		EUC-JP
mbstring.language			Japanese
mbstring.script_encoding		no value
mbstring.substitute_character		no value

この環境で、文字セットEUC-JPで記述したページのフォームからのPOST文字が化けてしまいます。

magic_quotes_gpcがOnになっています。
こいつはプログラムへの「”」「’」「\」といった入力値を自動でエスケープする機能。
仮に、「暴」などがSJISで入力された場合、この機能によって間違ってエスケープされて化けることは考えられます。

うーむしかしEUC-JPで書いているのにナゼニ・・・?

mbstring.detect_orderについては、マニュアルによれば

“auto” は、 “ASCII, JIS, UTF-8, EUC-JP, SJIS”に展開されます

とある。この順番でチェックしたらEUC-JPと認識されそうなもんだが・・・。うううむナゼニ。

しかし、ためしに有名なおまじないをしてみたら、化けなくなりました。
POSTデータの一番最初に「美乳」を送りつけるとおとなしく解釈しやがった。
うううううむ、なぜだーーーー。

ともかく、「美乳」はまずいので他の文字にしておこう。
うううむ。

1件のコメント to “EUC-JPフォームで文字化け”

  1. 今日のお気に入り / 日本波形 by Kenji さん:

    […] massat.jp – EUC-JPフォームで文字化け […]

Leave a Reply