EncodeUtil作った。
仕事で文字コード変換が必要になりそうなので、ためしに作ってみた。
public class EncodingUtil { private static final String EMPTY_STRING = ""; private static final byte[] EMPTY_BYTES = EMPTY_STRING.getBytes(); public static String convert2bytes2String4EBCDIC(byte[] data) { return decode(data, "cp939"); } // EBCDIC対応文字以外はそのまま public static byte[] convert2String2bytes4EBCDIC(String data) { return encode(data, "cp939"); } public static String decode(byte[] data, String decodeName) { String returnValue = null; if (data == null || data.length == 0) return EMPTY_STRING; try { returnValue = new String(data, decodeName); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } return returnValue; } public static byte[] encode(String data, String encodeName) { byte[] returnValue = null; if (data == null) return EMPTY_BYTES; try { returnValue = data.getBytes(encodeName); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } return returnValue; } public static byte[] Convert2String2bytes4Jis0208(String data) { return encode(data, "x-JIS0208"); } public static String Convert2Bytes2String4Jis0208(byte[] data) { return decode(data, "x-JIS0208"); } public static boolean isConvert2Jis0208(String data) { // nullやブランクでもOK if (data == null || "".equals(data)) return true; StringBuffer sb = new StringBuffer(); for (int i = 0; i < data.length(); i++) { char c = data.charAt(i); // アスキー以外 if (c > 0x80) { sb.append(c); } } String nonAsciiStr = sb.toString(); try { String jis0208DecodedStr = new String(nonAsciiStr .getBytes("x-JIS0208"), "x-JIS0208"); return nonAsciiStr.equals(jis0208DecodedStr); } catch (UnsupportedEncodingException ignore) { } return false; } }