2010-12-01 13 views
10

JavaでcharのUTF8コードを取得するにはどうすればよいですか? 私がchar「」と私は文字「E」を持っていると私はここに値233Javaでchar値を取得

をしたい値97 は私がCharacter.getNumericValue(a)を試みたがために、それが与えるmore values

ためのテーブルである必要があります私10と97ではない、何か考えですか?

これは非常に基本的なようですが、助けていただければ幸いです!

+0

を-8)? UTF-8の 'é'は '0xC3 0xA9'です。 – axtavt

答えて

9

charは、実際にはUnicode値含む数値タイプである(正確にはUTF-16を、 - あなたはBMP外の文字を表現するために char秒を必要とする)文字の。あなたはintでできるすべてのことを行うことができます。

Character.getNumericValue()は、文字を数字として解釈しようとします。

4

これは良い結果を生成します。同様に

int a = 'a'; 
System.out.println(a); // outputs 97 

System.out.println((int)'é'); 

233を出力します。

4

これらの「UTF-8」コードはそのようなものではありません。それらは実際にはUnicode code chartsのとおり、Unicode値です。

したがって、 'é'は実際にはU + 00E9です - UTF-8では2バイト{0xc3、0xa9}で表されます。

今Unicode値を取得するには - それはJavaが内部で使用するものだとして、またはUTF-16値より正確に - あなただけの整数に値を変換する必要があります。

char c = '\u00e9'; // c is now e-acute 
int i = c; // i is now 233 
+0

例をありがとう! – Nick

1

あなたの質問はあります不明特定の文字のUnicodeコードポイントが必要ですか(これは例です)、UnicodeコードポイントをUTF-8バイトシーケンスに変換しますか?

public class Foo 
{ 
    public static void main(String[] argv) 
    throws Exception 
    { 
     char c = '\u00E9'; 
     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
     OutputStreamWriter out = new OutputStreamWriter(bos, "UTF-8"); 
     out.write(c); 
     out.flush(); 
     byte[] bytes = bos.toByteArray(); 
     for (int ii = 0 ; ii < bytes.length ; ii++) 
     System.out.println(bytes[ii] & 0xFF); 
    } 
} 

(UTF8のページへオンラインUnicodeのもありますが、:

かつての場合、私は後者の場合は、次のプログラムは、それを行いますhttp://www.unicode.org/

でコードのチャートをお勧めします

8

これは、java.lang.StringのcodePointAt(int index)メソッドを使用することができます。ここでは例です:

"a".codePointAt(0) --> 97 
"é".codePointAt(0) --> 233 

あなたが不必要に文字列を作成しないようにしたい場合は、次のようにうまく機能し、char配列のために使用することができます。それを行うには

Character.codePointAt(new char[] {'a'},0) 
+0

私はここで終わった。なぜなら、code.codePoint( 'a')または非静的なコードポイント(codePoint) – user1708042

2

私の方法は、このようなものです:

char c = 'c'; 
int i = Character.codePointAt(String.valueOf(c), 0); 
// testing 
System.out.println(String.format("%c -> %d", c, i)); // c -> 99 
0

ユーティリティクラスStringUnicodeEncoderDecoderを持つオープンソースライブラリMgntUtilsがあります。このクラスは、すべてのStringをUnicodeシーケンスに変換する静的メソッドを提供します。非常に簡単で便利です。文字列を変換するにはあなただけの操作を行います。文字列の "Hello World" は

「\ u0048 \ u0065 \ u006c \ u006c \ u006f \ U0020 \ u0057 \ u006f \ u0072に変換されます例えば

String codes = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(myString); 

\ u006c \ u0064 "

すべての言語で動作します。ここには、図書館に関するすべての題名を説明する記事へのリンクがあります:MgntUtils。字幕 "文字列Unicodeコンバータ"を探します。この記事では、Maven Centralへのリンクを提供しています.Maven Centralには、アーティファクトを得ることができ、プロジェクト自体を手に入れることができます。ライブラリには、よく書かれたjavadocとソースコードが付属しています。

0

あなたはこのような利用可能なすべてのUTF-8文字一覧表示するには、単純なループを作成することができます。これは、UTF-8(http://en.wikipedia.org/wiki/UTFとどのように関連するかを

public class UTF8Characters { 
    public static void main(String[] args) { 
     for (int i = 12; i <= 999; i++) { 
      System.out.println(i +" - "+ (char)i); 
     } 
    } 
} 
関連する問題