Java Юникод в шестнадцатеричную строку

Код ниже дает мне строку Unicode как கா

sysout = new PrintStream(System.out, true, "UTF-8");
sysout.println("\u0B95\u0bbe");

Задавая input в качестве входных данных, могу ли я получить шестнадцатеричные значения как \u0B95 и \ u0bbe?

PS: это тамильский язык.

2 ответа

Решение

В соответствии с этим вам придется попробовать

System.out.println( "\\u" + Integer.toHexString('க' | 0x10000).substring(1) );

но он будет работать только на Unicode до 3.0. Если вы хотите получить больше значений, просто создайте цикл, например

String foo = "கா";
for (int i = 0; i < foo.length(); i++)
    System.out.println( "\\u" + Integer.toHexString(foo.charAt(i) | 0x10000).substring(1));

который производит

\u0b95
\u0bbe

Если вы хотите, чтобы они были в одной строке, измените System.out.println() в System.out.print() и добавить System.out.print("\n") в конце.

Вы можете использовать функциональность форматирования для печати escape-строк Java UTF-16.

Например, этот код записывает экранирование в STDOUT:

String str = "கா";
for(char ch : str.toCharArray())
   System.out.format("\\u%04x", (int) ch);
Другие вопросы по тегам