【发布时间】:2013-06-15 00:09:50
【问题描述】:
考虑以下程序。
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。
【问题讨论】:
-
"默认编码是 MacRoman"
-
在您的最后一行中,您能否将特定的
Charset附加到String构造函数(例如,Charset.forName("UTF-8")?那么结果是什么?
标签: java eclipse encoding character-encoding