• ベストアンサー

JSPで日本語のクッキーが文字化けします(Tomcat5.5.9)

フォームから値(日本語)を取ってJSPで表示すると、文字化けしてしまいますが、値 = new String(値.getBytes("8859_1"),"Shift_JIS" )の処理を入れることにより解決しました。 しかし、クッキーの値はこの処理を入れても文字化けしてしまいます。私の持っている2つの本には英語での値をとる処理しか載っていません。 下記のサイトを参考にTomcatのserver.xmlの修正と、web.xmlの作成。http://www.nihon-eng.co.jp/c-break/TechNote/tomcat/TCAT5_Inst.htm Tomcat5.5にはフィルタがないため、Tomcat4を落としてフィルタを\WEB-INF\classes下にコピーすると上記の処理を入れなくてもフォームが化けなくなったのですが、クッキーは文字化けです。 どう対処すればよいのでしょうか?どなたかわかる方よろしくお願いします。 環境 Windows2000 Appache連動なし 自分のPCのクッキーをみたら日本語のところが??????となってました。

質問者が選んだベストアンサー

  • ベストアンサー
noname#49664
noname#49664
回答No.1

クッキーに日本語を保存する場合、要するに通常のASCII文字だけのデータに変換しておけばいいわけです。いろいろやり方はあると思いますが、例えば私が通常使うやり方はURLエンコードして保存したのを読み込む際にデコードする方法です。エンコード・デコードはjava.netパッケージのURLEncode/URLDecodeを使えば簡単にできます。 エンコード String 変数 = URLEncoder.encode(テキスト,"UTF-8"); デコード String 変数 = URLDecoder.decode(テキスト,"UTF-8"); 保存する際は、URLEncoder.encodeでエンコードしたテキストをクッキーに保存し、読み込む際はクッキーから取り出したテキストをURLDecoder.decodeでデコードします。他にもエンコードの方法はあると思いますが、これが一番手っ取り早いのでは。 P.S. フォームのテキストが文字化けするのはrequestをsetCharacterEncodingしてないからか、あるいはJSPの<%@ page contentType>の指定が変なのでは。後々面倒なので、正しいエンコードで受け渡せるようにチェックしておいた方がいいですよ。

CUTS
質問者

お礼

回答ありがとうございました!どうやらURLエンコードを使うのが一般的なようですね。「クッキー JSP」を「cookie JSP」で検索したら参考になりそうなサイトも色々でてきました。クッキーは英語で書く方がポピュラーなようですね?フォーム値の文字化けは自力で解決しましたが、JSPにおける文字化けの経緯の説明として書かせていただいただけですので問題ありませんでした。

その他の回答 (1)

  • tsumooh
  • ベストアンサー率50% (1/2)
回答No.2

URLEncoderの使用例は以下のサイトに載っているので、ご参考までに。 JSPプログラムでクッキーを扱う http://www.atmarkit.co.jp/fjava/rensai/jsp08/jsp08.html#ap02

参考URL:
http://www.atmarkit.co.jp/fjava/rensai/jsp08/jsp08.html#ap02
CUTS
質問者

お礼

回答ありがとうございます!私のやりたいことがサンプルプログラムとして載っていて、非常に参考になりますた。ありがとうございました!

関連するQ&A

専門家に質問してみよう