以下はLinuxマシンでは動作しません。LinuxマシンでCharsetDecoderが動作しない
Charset charset = Charset.forName("UTF-8");
CharsetDecoder decoder = charset.newDecoder();
try {
FileOutputStream fo = new FileOutputStream("hi.txt");
PrintStream ps = new PrintStream(fo);
String msgBody = "ΣYMMETOXH";
ps.println(decoder.decode(ByteBuffer.wrap(decoder.decode(ByteBuffer.wrap(msgBody.getBytes())).toString().getBytes())));
ps.close();
fo.close();
} catch (CharacterCodingException e) {
e.printStackTrace();
}
このコードはWindowsで動作します。何が問題なの? Linuxマシンのデコーダでは、文字列をデコードしません。
何か例外が発生しますか?それはファイルにゴミを印刷しますか?また、あなたのファイル名はかなりWindows特有ですが、Linuxがあなたの現在のディレクトリにこのような複雑な名前のファイルを作成できることは確かです。 – andri
例外をスローしません。ファイルを作成し、 'msgBody'のデコードされた文字列の代わりに' msgBody'変数と同じものを書いています。 –