如何在Java中使用中文和日文字符作为字符串?

16

你好
我正在使用Java语言,需要在字符串中使用一些中文和日文字符,并通过System.out.println()打印出来。

我该如何做呢?

谢谢

3个回答

25

Java字符串支持Unicode,因此中文和日文都不是问题。但其他工具(例如文本编辑器)和操作系统Shell可能需要设置才能支持Unicode。

在读取或打印Unicode数据时,您必须确保控制台或流也支持Unicode(否则它可能会被替换为问号)。

Writer unicodeFileWriter = new OutputStreamWriter(
    new FileOutputStream("a.txt"), "UTF-8");
unicodeFileWriter.write("漢字");

你可以直接在Java源代码文件中嵌入Unicode文字,但是你需要告诉编译器文件以UTF-8的形式存在(javac -encoding UTF-8)。

String x = "漢字";

如果你想发挥创意,在方法、变量或类名中甚至可以使用中文字符。但这违反了命名惯例,我强烈不建议在类名中使用(因为它们需要映射到文件名,而Unicode可能会引起问题):

結果 漢字 = new 物().処理();

我在键盘上没有中文字符,那么我应该写什么代码才能打印出中文字符。 - sjain
1
你使用的是哪个操作系统?你不需要特殊的键盘,这在软件中已经处理好了。例如,我输入“漢字”时,只需键入“kanji + 空格”。此外,从Web浏览器或其他来源进行复制/粘贴也可以正常工作。 - Thilo
如果中文字符不在文件中怎么办?我的意思是,有没有直接处理它的Unicode编写器? - Paras Singh

4

只要使用Java字符串,它就完全支持Unicode,所以没有什么难以表达的。

System.out.println("世界您好!");

只需确保您的源代码文件是Unicode编码,如果使用非ASCII常量。 - AlcubierreDrive
2
你可能需要调整区域设置以支持System.out中的UTF-8,并告诉编译器你的源文件是UTF-8格式的。 - Thilo

2

还有一件事需要记住,读取器应该是BufferedReader,我的意思是:

BufferedReader br = new BufferedReader (new InputStreamReader (new FileInputStream (f), "UTF-8"));

必须这样做,因为当你读取文件时,可能会调用readLine():

while (br.readLine() != null)
{
  System.out.println (br.readLine());
}

我发现这种方法是唯一一个可以正常工作的,因为普通的Reader类中不包含非静态的readLine()方法(该方法不接受任何参数)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接