String.getBytes("ISO-8859-1")在OS X上给出了16位字符

len*_*tcl 6 java unicode macos ascii

使用Java 6从String中获取8位字符:

System.out.println(Arrays.toString("öä".getBytes("ISO-8859-1")));
Run Code Online (Sandbox Code Playgroud)

给我,在Linux上:[ - 10,28]但OS XI获得:[63,63,63,-89]

当使用花哨的新nio CharSetEncoder类时,我似乎得到了相同的结果.我究竟做错了什么?还是Apple的错?:)

Ala*_*ore 4

我通过将源文件保存为 UTF-8 来重现这个问题,然后告诉编译器它实际上是 MacRoman:

javac -encoding MacRoman Test.java

我本以为javacOSX 上会默认使用 UTF-8,但也许不是。或者也许您正在使用 IDE,并且默认为 MacRoman。不管怎样,你必须让它使用UTF-8。