2013-05-18 6 views
8

ниже код дает мне строку Unicode как காJava Unicode в шестнадцатеричную строку

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

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

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

+0

Это не дубликат, я думаю. Решение для одного символа. Но கா представляет собой комбинацию из двух символов. Вот почему у вас есть два значения шестнадцатеричного значения. – user1611248

ответ

5

По this вы должны попробовать

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") в конце концов.

+0

На самом деле мне нужна шестнадцатеричная строка «கா», а не «க». они оба разные. – user1611248

+1

@ user1611248 См. Обновленное сообщение. – Mateusz

+0

@Mateusz Я хочу то же самое в обратном порядке, как это можно достичь? –

4

Функцию format можно использовать для печати стилей строк Java UTF-16.

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

String str = "கா"; 
for(char ch : str.toCharArray()) 
    System.out.format("\\u%04x", (int) ch); 
Смежные вопросы