2008年2月22日金曜日

au携帯サイトの(絵文字)文字化け対応

スズキです。

au携帯サイトで絵文字とかをちゃんと表示させるには、
Javaの場合、charsetがWindows-31Jでなければ
うまくいきません。(?になってしまいます)

charsetをWindows-31Jにする方法は
いくらでもググれるのでいいとして、
問題はPOST時の文字化けです。

au端末はPOST時にContent-Typeを下記のように設定するようです。
application/x-www-form-urlencoded;charset=shift_jis

そう、強制的に、charset=shift_jisが付いてしまいます。
これにより、上記の文字化けが発生してしまいます。
Javaで対応することもできるとは思いますが、
("Servlet Filter"での調整ではうまくいきませんでしたが…)
今回は、下記のように、Apacheで処理するようにしました。

---- httpd.conf
SetEnvIf Request_Method "POST" IS_POST
RequestHeader set Content-Type "application/x-www-form-urlencoded" env=IS_POST
----

POSTの場合は強制的にContent-Typeを
application/x-www-form-urlencoded
にするって設定ですね。
(つまり、charset=shift_jisをなかったことにしています)

これで、charsetが最初に設定してるはずのWindows-31Jになり、
POSTでの文字化けが解消されます。

やっぱり、最後はApache頼みか…

--

http://suz-lab.blogspot.com/

0 コメント: