Есть ли стандартный метод, чтобы преобразовать последовательность как «\uFFFF» в характер, означающий, что последовательность шести характеров содержит представление одного unicode характера?
char c = "\uFFFF".toCharArray()[0];
Значение интерпретируется непосредственно как нужная строка, а вся последовательность реализуется как один символ.
Другой способ, если вы собираетесь жестко закодировать значение:
char c = '\uFFFF';
Обратите внимание, что \uFFFF
не кажется правильным символом юникода, но попробуйте, например, с \u041f
.
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'
Здесь обратная косая черта снимается (так что вы видите две из них, но строка s на самом деле всего 6 символов). Если вы уверены, что у вас в начале строки есть точно "\u", просто пропустите их и конвертируйте шестнадцатеричное значение:
String s = "\\u20ac";
char c = (char) Integer.parseInt( s.substring(2), 16 );
После этого c должен содержать символ евро, как и ожидалось.
Если вы анализируете ввод с помощью экранированных символов в стиле Java, возможно, вы захотите взглянуть на StringEscapeUtils.unescapeJava . Он обрабатывает экранирование Unicode, а также символы новой строки, табуляции и т. Д.
String s = StringEscapeUtils.unescapeJava("\\u20ac\\n"); // s contains the euro symbol followed by newline