考虑以下程序。
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
public class HelloWorld {
public static void main(String[] args) {
System.out.println(Charset.defaultCharset());
char[] array = new char[3];
array[0] = '\u0905';
array[1] = '\u0905';
array[2] = '\u0905';
CharBuffer charBuffer = CharBuffer.wrap(array);
Charset utf8 = Charset.forName("UTF-8");
ByteBuffer encoded = utf8.encode(charBuffer);
System.out.println(new String(encoded.array()));
}
}
当我使用终端执行此操作时,
java HelloWorld
我得到正确编码的形状文本。默认编码是MacRoman
.
现在,当我从 Eclipse 执行相同的代码时,我看到错误的文本打印到控制台。
当我将 Eclipse 的文件编码选项更改为 时UTF-8
,它会在 Eclipse 中打印正确的结果。
我想知道为什么会这样?理想情况下,文件编码选项不应该影响此代码,因为我在这里明确使用 UTF-8。
知道为什么会这样吗?
我正在使用 Java 1.6 (Sun JDK)、Mac OSx 10.7。