3

我想在这样的类文件中设置一个 unicode 字符:

TextView tv = ...;
tv.setText("·");

在 .java 文件中使用 unicode 字符有什么潜在的问题吗?

谢谢

4

2 回答 2

4

不会。Java 字符串支持 Unicode,因此您不会遇到任何问题。您可能必须检查TextView该类是否处理所有 Unicode 字符(它应该),但 Java 本身将处理 unicode 字符。

您还应该确保使用正确的编码设置保存文件。本质上,这意味着您的编辑器应该将 java 文件保存为 UTF-8 编码的 Unicode。有关此问题的更多详细信息,请参阅对此答案的评论。

于 2012-06-06T04:29:10.367 回答
3

在 .java 文件中使用 unicode 字符有什么潜在的问题吗?

如您所知,JVM 中的字符串存储为 Unicode - 所以问题是如何处理Java 源文件中的 Unicode ...

简而言之,使用 Unicode 就可以了。有几种方法可以接近它......

默认情况下,javac编译器期望源文件采用平台默认编码。这可以使用-encoding标志覆盖:

-encoding encoding
设置源文件编码名称,如 EUCJIS/SJIS/ISO8859-1/UTF8。如果-encoding未指定,则使用平台默认转换器。

或者,如果它是单个字符(看起来是这样),您可以将源文件保留在平台默认编码中,并使用 Unicode 转义序列指定字符:

tv.setText("\u1234");

... 其中 '1234' 是您想要的字符的 Unicode 值。

另一种选择是首先将文件保存为与 Unicode 兼容的编码(例如 UTF-8),然后用于native2ascii将该文件转换为您的本机编码(它将任何超出范围的字符转换为相应的 Unicode 转义序列)。

NAME
native2ascii- 本机到 ASCII 转换器

概要
native2ascii [ options ] [ inputfile [outputfile]]

描述
Java 编译器和其他 Java 工具只能处理包含 Latin-1 或 Unicode 编码(\udddd 符号)字符的文件。native2ascii 将包含其他字符编码的文件转换为包含 Latin-1 或 Unicode 编码字符的文件。

如果省略了 outputfile,则使用标准输出进行输出。此外,如果省略 inputfile,则使用标准输入进行输入。

于 2012-06-06T05:18:06.443 回答