Как использовать китайский и японский символы как строку в java?

Привет
Я использую java-язык. В этом я должен использовать некоторый китайский, японский символ в качестве строки и печатать с использованием System.out.println().

Как я могу это сделать?

Спасибо

Ответы

Ответ 1

Java Strings поддерживает Unicode, поэтому китайцы и японцы не проблема. Другие инструменты (например, текстовые редакторы) и оболочка вашей ОС, вероятно, должны быть рассказаны об этом.

При чтении или печати данных Unicode вы должны убедиться, что консоль или поток также поддерживает Unicode (в противном случае он, скорее всего, будет заменен вопросительными знаками).

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

Вы можете вставлять литералы Unicode непосредственно в файлы исходного кода Java, но вам нужно сообщить компилятору, что файл находится в UTF-8 (javac -encoding UTF-8)

String x = "漢字";

Если вы хотите разобраться, вы можете даже использовать китайские символы в именах методов, переменных или классов. Но это противоречит соглашениям об именах, и я бы сильно отговаривал его, по крайней мере, от имен классов (потому что они должны быть сопоставлены именам файлов, а Unicode может создавать проблемы там):

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

Ответ 2

Просто используйте его, строки Java полностью юникод, поэтому нечего просто сказать

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

Ответ 3

Немного устарел, но он сделал меня вау!

http://xahlee.org/java-a-day/unicode_in_java.html

В статье рассказывается об переменном именовании бу, из которого вы можете сказать, что достаточно написать свою китайскую/японскую строку непосредственно в вашем источнике.

Ответ 4

Еще одна вещь, которую следует помнить, должна быть BufferedReader, и я имею в виду:

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

это нужно сделать, потому что, когда вы читаете файл, readLine() можно вызвать:

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

Этот метод является единственным, который я нашел, который может нормально функционировать, потому что обычный Reader не содержит нестатический метод readLine() void (этот метод ничего не принимает).