2013-05-18 21 views
8

Il codice qui sotto mi dà la stringa Unicode come காJava Unicode per stringa esadecimale

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

Dando கா come input, posso ottenere i valori esadecimali come \ u0B95 e \ u0bbe?

PS: questa è la lingua Tamil.

+0

Non è un duplicato immagino. La soluzione è per single char. Ma கா è una combinazione di due caratteri. Questo è il motivo per cui hai due valori esadecimali. – user1611248

risposta

5

Secondo this Dovrete provare

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

ma funzionerà solo su Unicode fino a 3,0. Se vuoi ottenere più valori, crea semplicemente un ciclo, ad es.

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

che produce

\u0b95 
\u0bbe 

Se si desidera avere loro in una sola riga, cambiare System.out.println()-System.out.print() e aggiungere System.out.print("\n") alla fine.

+0

In realtà ho bisogno della stringa esadecimale di "கா" e non "க". entrambi sono diversi. – user1611248

+1

@ user1611248 Vedere post aggiornato. – Mateusz

+0

@Mateusz Voglio la stessa cosa in un modo opposto, come può realizzarlo? –

4

È possibile utilizzare la funzionalità format per stampare gli escape di stringa UTF-16 Java.

Per esempio, questo codice scrive le fughe di STDOUT:

String str = "கா"; 
for(char ch : str.toCharArray()) 
    System.out.format("\\u%04x", (int) ch);