Javaのcharは16ビットなので、どのように完全なUnicodeコードポイントを表現できるのでしょうか? 65536のコードポイントしか表現できませんが、それは正しいですか?CharaterはすべてのUnicodeコードポイントを表すことができますか?
答えて
はい、Java文字はUTF-16コード単位です。 Basic Multilingual Planeの外でUnicode文字を表現する必要がある場合は、java.lang.String
内の代理ペアを使用する必要があります。 String
クラスは、codePointAt(index)
など、完全なUnicodeコードポイントを扱うさまざまなメソッドを提供します。 section 3.1 of the Java Language Specificationから
:
ユニコード規格は、もともと固定幅16ビットの文字エンコーディングとして設計されました。 16ビット以上の表現が必要な文字を使用できるように変更されました。正当なコードポイントの範囲は、U + 0000〜U + 10FFFFで、16進数のU + n表記を使用しています。コードポイントがU + FFFFより大きい文字を補助文字と呼びます。 Unicode標準では、16ビット単位のみを使用して完全な文字範囲を表現するために、UTF-16と呼ばれるエンコーディングが定義されています。この符号化では、補助文字は、上位サロゲート範囲(U + D800〜U + DBFF)の1番目と、低サロゲート範囲(U + DC00〜U + DFFF)。 U + 0000〜U + FFFFの範囲の文字の場合、コードポイントとUTF-16コードユニットの値は同じです。
Javaプログラミング言語は、UTF-16エンコーディングを使用して16ビットコード単位のシーケンスでテキストを表します。主にCharacterクラスのいくつかのAPIでは、コードポイントを個々のエンティティとして表すために32ビットの整数が使用されます。 Javaプラットフォームは、2つの表現を変換するメソッドを提供します。
詳細については、Character
docsを参照してください。
符号なし16ビットであるchar
は0xFFFFまでの任意のコードポイントを表すことができますが、補足文字は大きくなりません。 Javaはchar
でUTF-16エンコーディングを使用すると最もよく考えられます。したがって、補助文字は実際には代理ペアのchar
のペアとして表されます。 1つのchar
はそのような補助文字を表すことができませんが、Javaはそれを処理します。
- 1. すべての「文字」が単なるコードポイントであるUnicodeでのエンコードはありますか?
- 2. emojisをチェックできるUnicodeコードポイントの特定の範囲はありますか?
- 3. RubyでUnicodeコードポイントをエンコードする
- 4. さまざまなコードポイントを表示するために、ハードウェアがUNICODEと互換性が必要ですか?
- 5. AndroidでUnicodeコードポイントを表示できるかどうか確認できますか?
- 6. UnicodeコードポイントをUTF-8に変換する
- 7. Unicode PHP用の16進コードポイント
- 8. 文字列リテラルの代わりにJavaでUnicodeコードポイントを表示
- 9. Javascript:すべての "\" charaterを ""に置き換える方法
- 10. UnicodeコードポイントをC言語の文字として出力する方法は?
- 11. Unicode "argv"を使用することはできますか?
- 12. [u8]のUnicodeコードポイントをRustのstrに変換する方法は?
- 13. PythonでコードポイントのUnicode版を入手する
- 14. Tokenize2のすべてのオプションを表示することはできますか?
- 15. 私はすべてのGIFSを表示することができます
- 16. Unicode文字を反復するには? (コードポイントではありません)
- 17. PythonでUnicode文字列を補完するコードポイント
- 18. fontconfigのUnicode範囲/コードポイントごとにフォントを設定する方法は?
- 19. C++ Unicode:バイト、コードポイント、およびGraphemes
- 20. 入力文字のUnicodeコードポイントを取得する - Objective C
- 21. Cを使用してUTF-16ファイルからUnicodeコードポイントをマップする方法
- 22. LEFTWARDS ARROW WITH上向き矢印のUnicodeコードポイント?
- 23. Java文字列のUnicodeコードポイントをどのように反復処理できますか?
- 24. Unicode(UTF-8)コードポイントをバイトに変換する
- 25. pytestはテスト名でUnicodeをサポートしていますか?ここ
- 26. Dart Editorでこれらの「パッケージ」フォルダをすべて非表示にすることはできますか?
- 27. バイト配列にUnicode文字列をダンプすることはできますか?
- 28. Perl6でUnicodeコードポイントを名前で検索するにはどうすればよいですか?
- 29. postgresqlでcharaterが大文字か小文字かを調べる方法は?
- 30. 私のPython Webアプリケーションはすべての文字列に対してUnicodeを使用すべきですか?
この便利なhttp://en.wikipedia.org/wiki/UTF-16があります。 –