StringByteUtil.java
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
public class StringByteUtil {
// デフォルト文字エンコーディング
private static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
/**
* 文字列をバイト配列に変換します。
*
* @param str 変換する文字列
* @param charsetName 使用する文字セット名(例: "UTF-8", "Shift_JIS")
* @return バイト配列(null入力時はnull)
*/
public static byte[] toBytes(String str, String charsetName) {
if (str == null) return null;
Charset charset = getCharset(charsetName);
return str.getBytes(charset);
}
/**
* バイト配列を文字列に変換します。
*
* @param bytes 変換するバイト配列
* @param charsetName 使用する文字セット名
* @return 文字列(null入力時はnull)
*/
public static String toString(byte[] bytes, String charsetName) {
if (bytes == null) return null;
Charset charset = getCharset(charsetName);
return new String(bytes, charset);
}
/**
* 文字セット名から Charset を取得します。
* 無効な名
* 前が指定された場合はデフォルト UTF-8 を使用します。
*
* @param charsetName 文字セット名
* @return Charset インスタンス
*/
private static Charset getCharset(String charsetName) {
if (charsetName == null || charsetName.isEmpty()) {
return DEFAULT_CHARSET;
}
try {
return Charset.forName(charsetName);
} catch (IllegalArgumentException e) {
System.err.println("指定された文字コードが無効です: " + charsetName + "。UTF-8を使用します。");
return DEFAULT_CHARSET;
}
}
}
実行例
String original = "こんにちは世界";
String charset = "Shift_JIS";
byte[] bytes = StringByteUtil.toBytes(original, charset);
String restored = StringByteUtil.toString(bytes, charset);
System.out.println("元の文字列: " + original);
System.out.println("復元された文字列: " + restored);
元の文字列: こんにちは世界
復元された文字列: こんにちは世界