に以下のコードは、入力としてகாを与えることによってகாJavaのUnicodeの16進数文字列
sysout = new PrintStream(System.out, true, "UTF-8");
sysout.println("\u0B95\u0bbe");
として私にUnicode文字列を与える、私は\ u0B95と\ u0bbeとして進値を得ることができます?
PS:これはタミル語です。
に以下のコードは、入力としてகாを与えることによってகாJavaのUnicodeの16進数文字列
sysout = new PrintStream(System.out, true, "UTF-8");
sysout.println("\u0B95\u0bbe");
として私にUnicode文字列を与える、私は\ u0B95と\ u0bbeとして進値を得ることができます?
PS:これはタミル語です。
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));
。
実際には、 "கா"ではなく "கா"の16進文字列が必要です。彼らはどちらも異なっています。 – user1611248
@ user1611248最新の記事を参照してください。 – Mateusz
@Mateusz私は反対の方法で同じことをしたい、どのようにそれを達成することができますか? –
format機能を使用して、Java UTF-16文字列エスケープを印刷できます。例えば
、このコードは、STDOUTへのエスケープを書き込みます
String str = "கா";
for(char ch : str.toCharArray())
System.out.format("\\u%04x", (int) ch);
それは私が推測する重複ではありません。ソリューションはシングルチャー用です。しかし、காは2つのcharの組み合わせです。だからこそ2つの16進値があるのです。 – user1611248