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);