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

フォームから値(日本語)を取ってJSPで表示すると、文字化けしてしまいますが、値 = new String(値.getBytes("8859_1"),"Shift_JIS" )の処理を入れることにより解決しました。

しかし、クッキーの値はこの処理を入れても文字化けしてしまいます。私の持っている2つの本には英語での値をとる処理しか載っていません。

下記のサイトを参考にTomcatのserver.xmlの修正と、web.xmlの作成。http://www.nihon-eng.co.jp/c-break/TechNote/tomc …
Tomcat5.5にはフィルタがないため、Tomcat4を落としてフィルタを\WEB-INF\classes下にコピーすると上記の処理を入れなくてもフォームが化けなくなったのですが、クッキーは文字化けです。

どう対処すればよいのでしょうか?どなたかわかる方よろしくお願いします。

環境 Windows2000 Appache連動なし 自分のPCのクッキーをみたら日本語のところが??????となってました。

A 回答 (2件)

クッキーに日本語を保存する場合、要するに通常の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>の指定が変なのでは。後々面倒なので、正しいエンコードで受け渡せるようにチェックしておいた方がいいですよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/05/22 14:10

URLEncoderの使用例は以下のサイトに載っているので、ご参考までに。



JSPプログラムでクッキーを扱う
http://www.atmarkit.co.jp/fjava/rensai/jsp08/jsp …

参考URL:http://www.atmarkit.co.jp/fjava/rensai/jsp08/jsp …
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/05/22 21:56

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