問題: バイトに変換する特殊文字を含む文字列があり、その逆も同様です。変換は Windows では正しく機能しますが、Linux では特殊文字が正しく変換されません。Linux のデフォルトの文字セットは、Charset で見られるように UTF-8 です。 defaultCharset.getdisplayName()
ただし、オプション -Dfile.encoding=ISO-8859-1 を使用して Linux で実行すると、正しく動作します。
UNIX 環境で -D オプションを設定せずに UTF-8 デフォルトの文字セットを使用して動作させる方法。
編集: jdk1.6.13 を使用します
編集: コード スニペットは cs = "ISO-8859-1"; で動作します。または cs="UTF-8"; winではあるがlinuxではそうではない
String x = "½";
System.out.println(x);
byte[] ba = x.getBytes(Charset.forName(cs));
for (byte b : ba) {
System.out.println(b);
}
String y = new String(ba, Charset.forName(cs));
System.out.println(y);
よろしくお願いします