JavaでcharのUTF8コードを取得するにはどうすればよいですか? 私がchar「」と私は文字「E」を持っていると私はここに値233Javaでchar値を取得
をしたい値97 は私がCharacter.getNumericValue(a)
を試みたがために、それが与えるmore values
ためのテーブルである必要があります私10と97ではない、何か考えですか?
これは非常に基本的なようですが、助けていただければ幸いです!
JavaでcharのUTF8コードを取得するにはどうすればよいですか? 私がchar「」と私は文字「E」を持っていると私はここに値233Javaでchar値を取得
をしたい値97 は私がCharacter.getNumericValue(a)
を試みたがために、それが与えるmore values
ためのテーブルである必要があります私10と97ではない、何か考えですか?
これは非常に基本的なようですが、助けていただければ幸いです!
char
は、実際にはUnicode値含む数値タイプである(正確にはUTF-16を、 - あなたはBMP外の文字を表現するために char
秒を必要とする)文字の。あなたはint
でできるすべてのことを行うことができます。
Character.getNumericValue()
は、文字を数字として解釈しようとします。
これは良い結果を生成します。同様に
int a = 'a';
System.out.println(a); // outputs 97
:
System.out.println((int)'é');
は233
を出力します。
これらの「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
例をありがとう! – Nick
あなたの質問はあります不明特定の文字の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/
でコードのチャートをお勧めします
これは、java.lang.StringのcodePointAt(int index)メソッドを使用することができます。ここでは例です:
"a".codePointAt(0) --> 97
"é".codePointAt(0) --> 233
あなたが不必要に文字列を作成しないようにしたい場合は、次のようにうまく機能し、char配列のために使用することができます。それを行うには
Character.codePointAt(new char[] {'a'},0)
私はここで終わった。なぜなら、code.codePoint( 'a')または非静的なコードポイント(codePoint) – user1708042
私の方法は、このようなものです:
char c = 'c';
int i = Character.codePointAt(String.valueOf(c), 0);
// testing
System.out.println(String.format("%c -> %d", c, i)); // c -> 99
ユーティリティクラス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とソースコードが付属しています。
あなたはこのような利用可能なすべての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);
}
}
}
を-8)? UTF-8の 'é'は '0xC3 0xA9'です。 – axtavt