久々にServletで悩みました。機種依存文字ってEUC-JPベースで動かしていると難しいですね。
機種依存文字を含んでいたらエラーにしたいのですが、悩んだあげくEUC->MS932へ変換できるどうかで判断することにしました。(邪道かな?)
//request.setCharacterEncoding("euc-jp");
/**EUC文字列として取得*/
byte[] bstr = request.getParameter("themename").getBytes("8859_1");
String strThemeName = new String(bstr, "EUC-JP");
try {
//MS932へ変換し、変換できない文字が含まれているかチェックする
CharBuffer cb = CharBuffer.wrap(strThemeName.toCharArray());
Charset charset = Charset.forName("MS932");
CharsetEncoder encoder = charset.newEncoder();
ByteBuffer bb = encoder.encode(cb);
} catch (UnmappableCharacterException e) {
変換できない文字が含まれている
}
機種依存文字を含んでいたらエラーにしたいのですが、悩んだあげくEUC->MS932へ変換できるどうかで判断することにしました。(邪道かな?)
//request.setCharacterEncoding("euc-jp");
/**EUC文字列として取得*/
byte[] bstr = request.getParameter("themename").getBytes("8859_1");
String strThemeName = new String(bstr, "EUC-JP");
try {
//MS932へ変換し、変換できない文字が含まれているかチェックする
CharBuffer cb = CharBuffer.wrap(strThemeName.toCharArray());
Charset charset = Charset.forName("MS932");
CharsetEncoder encoder = charset.newEncoder();
ByteBuffer bb = encoder.encode(cb);
} catch (UnmappableCharacterException e) {
変換できない文字が含まれている
}


コメントする