Java: конвертировать строку "\ uFFFF" в char - PullRequest
29 голосов
/ 24 января 2010

Существует ли стандартный метод преобразования строки типа "\ uFFFF" в символ, означающий, что строка из шести символов содержит представление одного символа Юникода?

Ответы [ 4 ]

34 голосов
/ 24 января 2010
char c = "\uFFFF".toCharArray()[0];

Значение напрямую интерпретируется как требуемая строка, и вся последовательность реализуется как один символ.

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

char c = '\uFFFF';

Обратите внимание, что \uFFFF не является правильным символом Юникода, но попробуйте, например, \u041f.

Прочтите здесь об экранировании Юникода

19 голосов
/ 24 января 2010

Обратная косая черта здесь экранирована (так что вы видите два из них, но строка s действительно имеет длину всего 6 символов). Если вы уверены , что в начале вашей строки точно стоит «\ u», просто пропустите их и преобразуйте шестнадцатеричное значение:

String s = "\\u20ac";

char c = (char) Integer.parseInt( s.substring(2), 16 );

После этого c должен содержать символ евро, как и ожидалось.

18 голосов
/ 07 февраля 2010

Если вы анализируете ввод с экранированными символами в стиле Java, вам может понадобиться StringEscapeUtils.unescapeJava . Он обрабатывает экранирование Unicode, а также переводы строк, табуляции и т. Д.

String s = StringEscapeUtils.unescapeJava("\\u20ac\\n"); // s contains the euro symbol followed by newline
6 голосов
/ 24 января 2010
String charInUnicode = "\\u0041"; // ascii code 65, the letter 'A'
Integer code = Integer.parseInt(charInUnicode.substring(2), 16); // the integer 65 in base 10
char ch = Character.toChars(code)[0]; // the letter 'A'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...