【问题标题】:Using a unicode character in a .java file?在 .java 文件中使用 unicode 字符?
【发布时间】:2012-06-06 04:28:01
【问题描述】:

我想在类文件中设置一个 unicode 字符,如下所示:

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

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

谢谢

【问题讨论】:

  • 这可能是一个迂腐的评论,但官方 Java Language Specification 声明“程序是用 Unicode 编写的。”我想这意味着您不能在 Java 中使用 非 Unicode 字符,无论这意味着什么。您可能想重新表述这个问题。术语和命名在这项业务中很重要。 :)

标签: java android unicode


【解决方案1】:

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

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

【讨论】:

  • 您还需要确保您使用的编辑器将以 UTF-8 格式保存 Java 源代码(这是编译器所期望的)。在 Eclipse 中,最简单的做法是导航到 Windows -> Preferences -> General -> Workspace,然后将文本文件编码设置为 UTF-8。
  • 我一直想知道为什么Eclipse会根据操作系统环境设置其默认的文本文件编码。 IMO,IntelliJ 总体上具有更好的默认设置。
  • @TedHopp 嗯,它不会理解 UTF-16(带有 BOM)之类的吗?
  • @pst 编译器可以采用任何文本文件编码,只要你明确告诉它,但是,如果我没记错的话,类文件中的字符串是用 UTF-8 编码的。
  • @Oleksi:上面的 cmets 解决了这个问题,但你的答案本身并不能解决 IMO。该问题询问是否在 Java 源文件 中包含 unicode 字符——这要求文件以适当的编码保存,并且 javac 编译器被告知以所述编码读取文件。
【解决方案2】:

在 .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,则使用标准输入进行输入。

【讨论】:

    猜你喜欢
    • 2011-12-18
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多