Как использовать китайский и японский символ в качестве строки в Java? - PullRequest
15 голосов
/ 01 ноября 2010

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

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

Спасибо

Ответы [ 4 ]

23 голосов
/ 01 ноября 2010

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 物().処理();
4 голосов
/ 01 ноября 2010

Просто используйте его, строки Java полностью в юникоде, так что нет ничего сложного, чтобы просто сказать

System.out.println("世界您好!");
3 голосов
/ 01 ноября 2010

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

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

Статья посвящена именам переменных, но вы можете сказать, что достаточно написать китайскую / японскую строку прямо в исходном коде.

1 голос
/ 23 ноября 2011

Еще одна вещь, которую нужно помнить, Reader должен быть 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 (этот метод ничего не принимает).

...