Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在.java文件中使用unicode字符?_Java_Android_Unicode - Fatal编程技术网

在.java文件中使用unicode字符?

在.java文件中使用unicode字符?,java,android,unicode,Java,Android,Unicode,我想在类文件中设置unicode字符,如下所示: TextView tv = ...; tv.setText("·"); 在.java文件中使用unicode字符是否有任何潜在错误 谢谢没有。Java字符串支持Unicode,所以您不应该遇到任何问题。您可能需要检查TextView类是否处理所有Unicode字符(它应该这样做),但Java本身将处理Unicode字符 还应确保使用正确的编码设置保存文件。本质上,这意味着您的编辑器应该将java文件保存为UTF-8编码的Unicode。有关此问

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

TextView tv = ...;
tv.setText("·");
在.java文件中使用unicode字符是否有任何潜在错误


谢谢

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

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

在.java文件中使用unicode字符是否有任何潜在错误?

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

简言之,使用Unicode很好。有几种方法可以解决这个问题

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

-编码编码

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

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

tv.setText("\u1234");
。。。其中“1234”是所需字符的Unicode值

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

名称
native2ascii
-本机到ASCII转换器

简介
native2ascii[options][inputfile[outputfile]]

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

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


您还需要确保正在使用的编辑器将Java源代码保存在UTF-8中(这是编译器所期望的)。在Eclipse中,最简单的方法是导航到Windows->Preferences->General->Workspace,然后将文本文件编码设置为UTF-8。我总是想知道为什么Eclipse会根据操作系统环境设置其默认文本文件编码。依我看,IntelliJ总体上有更好的默认设置。@TedHopp-Hmm,它不会理解UTF-16(使用BOM)之类的?@pst编译器可以接受任何文本文件编码,只要你明确地告诉它,但是,如果我记得正确,类文件中的字符串是用UTF-8编码的。@Oleksi:上面的注释解决了这个问题,但你的答案本身并不能满足我的要求。这个问题要求在Java源文件中包含unicode字符——这要求文件以适当的编码保存,并要求javac编译器以所述编码读取文件。这可能是一个迂腐的评论,但官方声明“程序是用unicode编写的。”我想这意味着Java中不能有非Unicode字符,不管这意味着什么。你可能想重新措辞这个问题。术语和命名在这项业务中很重要。:)