2016-05-30 6 views
1

私はこのような入力文字を持っています。この文字の場合、私はこれと同等のHexエンティティ "0C08"が必要です。これはjavaのinbuilt関数はありますか?Telugu文字をJavaのUTF-8エンコード文字に変換するには?

ありがとうございます。

+1

あなたは 'CP850'エンコーディングでバイトを取得しています。次に、バイトが' UTF-8'であるところに新しい 'String'を作成しています。なぜあなたは 'String'コンストラクタに嘘をつきますか?どうして?あなたのコードは 'String value = columnDetails.getColumnName();'でなければなりません。 – Kayaman

+0

私は与えられた入力[それまでどんな形式であったか]をUTF-8エンコーディング形式に変換したいと思います。私はそのコードを試みたが、それは動作していません。 –

+0

私は、1つのチャーターがあれば、同等のUTF-8文字が必要だと言っています。 –

答えて

1

javaの文字はユニコードで保持されます。 外部バイトストリームから読み書きするときにエンコーディングを指定する必要があります。あなたはUTF-8エンコーディングの進表現をしたい場合は、この試行し、 :

//not optimized 
String toHex(byte[] b) { 
    String s=""; 
    for (int i=0; i<b.length; ++i) s+=String.format("%02X",b[i]&0xff); 
    return s; 
} 
System.out.println(toHex("ఈ".getBytes("UTF-8"))); //prints E0B088 

String value = columnDetails.getColumnName(); 
System.out.println(value); //output with default encoding 
System.out.write(value.getBytes("UTF-8"));//output with UTF-8 

編集:このコードはUTF-8コンソール上の2つの同じ行を印刷する必要があります

注意

Edit2:またはUnicode(2バイト表現)を使用する場合:

static String toHex(String b) { 
String s=""; 
for (int i=0; i<b.length(); ++i) s+=String.format("%04X",b.charAt(i)&0xffff); 
    return s; 
} 
System.out.println(toHex("ఈ")); //prints 0C08 
+0

申し訳ありません私はmyquestionを編集しています –

+0

私は多くの研究をしましたが、私はJavaでinbuilt関数を取得しませんでした。私がしたのは、テルグ語のUnicodeに相当する既知のクラスが作成され、その単語が形成されました。すべてのあなたの助けをありがとう –

+0

解明_(これはすべてのTelegu文字がBMPにあるのでOPの質問には影響しません):_ JavaはUTF-16(以前はUCS-2)のUnicode文字を使用しています。 'char'プリミティブデータ型は16ビットです。 Javaの 'String'はすべてのUnicodeコードポイントを表すことができますが、' char'はBMP内のもの( '\ u0000'-' \ uffff'の範囲)のみを表すことができます。 –

0

Java文字列はUですTF-16。 UTF-8を入手するには、次のようなコードを書いてください。

String string = "SomethingInTeluguOrwhatever"; 
byte[] utf8Bytes = string.getBytes(Charsets.forName("utf-8")); 

これでUTF-8値が得られます。 hexを使用する場合は、バイトを反復して16進数で出力します。

関連する問題