Java 如何将 3 字节 Unicode 字符放入 char 类型中?
因此,Java中的“char”是2个字节。(可以从这里验证。
我有这个示例代码:
public class FooBar {
public static void main(String[] args) {
String foo = "€";
System.out.println(foo.getBytes().length);
final char[] chars = foo.toCharArray();
System.out.println(chars[0]);
}
}
输出如下:
3
€
我的问题是,Java如何将3字节字符放入char数据类型中?顺便说一句,我正在运行带有参数的应用程序:-Dfile.encoding=UTF-8
另外,如果我进一步编辑代码并添加以下语句:
File baz = new File("baz.txt");
final DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(baz));
dataOutputStream.writeChar(chars[0]);
dataOutputStream.flush();
dataOutputStream.close();
最终文件“baz.txt”将只有2个字节,即使我将其视为UTF-8文件,它也不会显示正确的字符。
编辑2:如果我打开编码UTF-16 BE的文件“baz.txt”,我会在我的文本编辑器中看到€字符,我想这是有道理的。