我想在一个类文件中设置一个Unicode字符,例如:
TextView tv = ...;
tv.setText("·");
在Java文件中使用Unicode字符是否存在潜在问题?
谢谢。
Java字符串支持Unicode,因此您不应遇到任何问题。您可能需要检查TextView
类是否处理所有Unicode字符(它应该这样做),但Java本身将处理Unicode字符。
您还应确保文件以正确的编码设置保存。这基本上意味着您的编辑器应该将Java文件保存为UTF-8编码的Unicode。有关此问题的更多详细信息,请参见此答案的注释。
在 .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转义序列)。
名称
native2ascii
- 本地到ASCII转换器语法
native2ascii [选项] [inputfile [outputfile]]
描述
Java编译器和其他Java工具只能处理包含Latin-1或Unicode编码(\udddd
表示法)字符的文件。 native2ascii将包含其他字符编码的文件转换为包含Latin-1或Unicode编码字符的文件。如果省略outputfile,则使用标准输出进行输出。此外,如果省略inputfile,则使用标准输入进行输入。