поиск юникода для неанглийских символов - PullRequest
4 голосов
/ 17 января 2010

Я должен напечатать неанглийскую строку в программе Java. У меня есть строка со мной. Как получить юникод из составляющих его символов, чтобы я вставил строку в программу?

Ответы [ 4 ]

3 голосов
/ 17 января 2010

В какой кодовой странице у вас есть эта строка? Исходники Java могут быть в любой кодировке, поэтому вы можете поместить эту строку прямо в источник и использовать параметры компилятора для установки кодовой страницы. См. NetBeans -> Узел проекта -> Свойства -> Источник -> Кодировка.

2 голосов
/ 17 января 2010

Исходные файлы кодировались с использованием «MacRoman» (это можно найти в Свойствах проекта -> Ресурс -> Кодировка текстового файла). Я изменил его на «UTF-8», а затем попытался вставить в программу реальную неанглийскую строку и попытался распечатать. это сработало.

Возможно, вы искажали данные при сохранении или во время компиляции. Исходный код не содержит никакой внутренней информации о кодировке, поэтому легко повредить строковые литералы, которые содержат символы вне основного диапазона «ASCII». Чтобы избежать этой проблемы, рассмотрите возможность использования escape-последовательностей Unicode в ваших исходных файлах. Вы либо делаете это, либо вы гарантируете, что любой, кто соприкасается с источником, всегда обрабатывает его соответствующим образом - первый способ проще. Если это для коммерческого приложения, рассмотрите возможность вывода строк в файл ресурсов.

1 голос
/ 17 января 2010

Как говорилось в предыдущих ответах, вы можете написать строки, содержащие символы, которые не могут быть закодированы в обычных наборах символов ISO-8859-1 или US-ASCII, непосредственно в исходном файле.Вы должны убедиться, что ваша IDE сохраняет файл как UTF-8.И, возможно, вам понадобится добавить «-encoding UTF-8» к вашей команде javac, чтобы обеспечить правильное чтение javac.

Но я думаю, что вам интересно узнать, как встроить строку с использованием синтаксиса «\ uXXXX», возможно, чтобы избежать каких-либо проблем с кодировкой исходного файла.Этот короткий фрагмент кода, вероятно, подойдет вам;он грубо предполагает, что любой символ, значения UTF-16 которого превышают 255., должен быть экранирован.

public static void main(String[] args) {
  String s = args[0];
  for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
    int value = (int) c;
    if (value < 256) {
      System.out.print(c);
    } else {
      System.out.print("\\u" + Integer.toHexString(value));
    }
  }
}
0 голосов
/ 17 января 2010
python -c "print repr('text goes here'.decode('utf-8'))"

Это не всегда может быть 'utf-8', но это нормальная отправная точка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...