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

お世話になっております。
掲題の質問について、ご教示いただけないでしょうか。

【質問】
サーバーAのサーブレットA1より、
サーバーBのサーブレットB2へ漢字をPOSTしようとしています。
エンコードはサーブレットA1,B2ともにShift_JISを使用しています。
しかし、A1より送信した漢字のデータをB2で表示させると"?"になってしまいます。
どなたかサーブレットB2でもShift_JISとして、漢字表示させる方法をご教示ください。

【サーブレットA1の該当箇所】
URL url = new URL("サーブレットB2のURL");
HttpURLConnection conn = (HttpRLConnection) url.openConnection() ;

conn.setRequestMethod("POST");
conn.setRequestProperty("Accept-Language","ja");
conn.setDoOutput(true);

PrintWriter writer = new PrintWriter(new OutputStreamWriter(conn.getOutputStream() , "Shift_JIST") ;
writer.print("data=漢字");


【サーブレットB2の該当箇所】
public void doPost(HttpServletRequest req, HttpServletResponce resp){
try{

req.setCharacterEncoding("Shift_JIS");
resp.setContentType("text/html;charset=Shift_JIS");

System.out.println( req.geParameter("data") );

}catch(Exception e){
System.out.println(e);
}
}

以上、宜しくお願いいたします。

A 回答 (2件)

ざっと見たところ、テキストをURLエンコードせず、そのままクエリー文字列にしているように見えますが。

送信する際にURLエンコードし、受け取った側でURLデコードすれば文字化けはしないと思います。

エンコード
URLEncoder.encode(テキスト , エンコード名);

デコード
URLDecoder.decode(テキスト , エンコード名);
    • good
    • 3
この回答へのお礼

ご回答ありがとうございました。
おかげさまで無事動くようになりました。

お礼日時:2011/01/07 16:32

方法は幾つかありますが。

プリミティブな方法で。

>>PrintWriter writer = new PrintWriter(new OutputStreamWriter(conn.getOutputStream() , "Shift_JIST") ;
>>writer.print("data=漢字");



PrintWriter writer = new PrintWriter( conn.getOutputStream() );
writer.print( new String( "data=漢字".getBytes( "Shift_JIS" ) ) );
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
試してみましたが、なぜかうまく動きませんでした。。。
他の設定が悪かったのかもしれないです。

お礼日時:2011/01/07 16:31

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