造成混淆的原因可能是文档随 Java 版本 7 发生了变化。
在 Java 6 中,solaris 和 unix 的文档 ( http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/native2ascii.html ) 说:“Java 编译器和其他 Java 工具只能处理文件其中包含 Latin-1 和/或 Unicode 编码(\udddd 表示法)字符。native2ascii 将包含其他字符编码的文件转换为包含 Latin-1 和/或 Unicode 编码字符的文件。 "
我认为这显然意味着输出是 Latin-1,而不是 Latin-1 的字符将在输出中进行 Unicode 编码。
我在 Ubuntu 上检查了 Openjdk 6,并且那里的 native2ascii 不符合文档,它将 Latin-1 字符输出为 Unicode 编码。因此,在这种情况下,文档或 native2ascii 工具都可能被认为是不正确的。
但是在 Java 7 和 Java 8 中,文档(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/native2ascii.html https://docs.oracle.com/javase/8/docs /technotes/tools/unix/native2ascii.html)说:“native2ascii 将编码为 Java 运行时环境支持的任何字符编码的文件转换为以 ASCII 编码的文件,对所有文件使用 Unicode 转义符(“\uxxxx”表示法)不属于 ASCII 字符集的字符。 "
我在 Ubuntu 上检查了 Openjdk 8 native2ascii,发现它可以相应地工作,它将 Latin-1 字符转换为 Unicode 编码。
请注意,7/8 文档还提到“对于包含不在 ISO-8859-1 字符集中的字符的属性文件,此过程是必需的。”
我认为这显然意味着包含 Latin-1(又名 ISO-8859-1)编码字符的属性文件仍然有效。