2013-05-18 30 views
8

に以下のコードは、入力としてகாを与えることによってகாJavaのUnicodeの16進数文字列

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

として私にUnicode文字列を与える、私は\ u0B95\ u0bbeとして進値を得ることができます

PS:これはタミル語です。

+0

それは私が推測する重複ではありません。ソリューションはシングルチャー用です。しかし、காは2つのcharの組み合わせです。だからこそ2つの16進値があるのです。 – user1611248

答えて

5

thisによると、あなたは

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

を試す必要があるでしょうが、それは唯一の3.0までのUnicode上で動作します。より多くの値を取得するには、ループを作成するだけです(例:あなたは、1行にそれらを持っているSystem.out.print()System.out.println()を変更し、最後にSystem.out.print("\n")を追加したい場合は

\u0b95 
\u0bbe 

を生成

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

+0

実際には、 "கா"ではなく "கா"の16進文字列が必要です。彼らはどちらも異なっています。 – 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); 
関連する問題