リクエストの値に日本語が使用された場合、
文字化けして設定されている場合がある。
Tomcatの設定で回避するのがセオリーだが、
うまくいかない場合に以下のロジックでjava側で対処する。
// リクエストの値を取得する
String str = request.getParameter("keyword");
try {
// ①リクエストの値をバイトデータに戻す。
byte[] byteData = str.getBytes("ISO_8859_1");
// ②戻したデータを、エンコードする。
str = new String(byteData, "Shift_JIS");
} catch (UnsupportedEncodingException e) {
}
return str;
今回の場合、
・リクエストの値 = Shift_JIS
・javaの扱うエンコード = ISO_8859_1
リクエストとjavaが違うエンコードのためにおきた文字化け。
①リクエストの値をバイトデータに戻す。
Shift_JISの文字列をISO_8859_1で取得するから文字化けがおこった。
まず、ISO_8859_1でバイト単位にばらす。
②バイト単位にばらしたものを正しいエンコードShift_JISで組み立て直す。
文字化けして設定されている場合がある。
Tomcatの設定で回避するのがセオリーだが、
うまくいかない場合に以下のロジックでjava側で対処する。
// リクエストの値を取得する
String str = request.getParameter("keyword");
try {
// ①リクエストの値をバイトデータに戻す。
byte[] byteData = str.getBytes("ISO_8859_1");
// ②戻したデータを、エンコードする。
str = new String(byteData, "Shift_JIS");
} catch (UnsupportedEncodingException e) {
}
return str;
今回の場合、
・リクエストの値 = Shift_JIS
・javaの扱うエンコード = ISO_8859_1
リクエストとjavaが違うエンコードのためにおきた文字化け。
①リクエストの値をバイトデータに戻す。
Shift_JISの文字列をISO_8859_1で取得するから文字化けがおこった。
まず、ISO_8859_1でバイト単位にばらす。
②バイト単位にばらしたものを正しいエンコードShift_JISで組み立て直す。