今はUTF-8で少し失われています。
私はマルチバイトの安全という用語の正確な定義を探しています。「マルチバイトセーフ」という用語を定義してください。
2
A
答えて
4
ユニコード文字を扱うとき、すべての文字がただ1バイトまたはchar(java)を取ると仮定するのは安全ではありません。したがって、文字列を読み込んだり解析したりするときは、これを考慮する必要があります。
ここには、Unicode w.r.t Javaを扱うときの複雑さを説明するexcellent articleがあります。
ストアド文字はバイトの一貫性のない数を取ることができます。 UTF-8 エンコードされた文字は、 (LATIN_CAPITAL_LETTER_A)と (MATHEMATICAL_FRAKTUR_CAPITAL_G) バイトの4つを取ります。可変幅エンコーディングは、バイト配列からの読み出しと のデコードのために、 の意味を持ちます。
すべてのコードポイントをcharに格納できるわけではありません。 MATHEMATICAL_FRAKTUR_CAPITAL_Gの例 は、補助範囲の にあり、16 ビットには格納できません。これは2つの 連続char値で表されなければならず、 のいずれも単独では意味がありません。 Characterクラスは、 の32ビットコードポイントを操作するためのメソッドを提供します。
// Unicode code point to char array
char[] math_fraktur_cap_g = Character.toChars(0x1D50A);
関連する問題
- 1. python:デコレータをクラスとして定義してクラスをデコレートしてください
- 2. twitter-bootstrapを使用してbtn-groupの値を定義してください
- 3. エスプレッソテキストの特定の単語をクリックしてください
- 4. 言語を設定してくださいandroid to php-mysqli
- 5. doxygen \ includeの言語を指定してください。
- 6. nginx言語のサブディレクトリを設定してください
- 7. "some"という単語を含む行を選択してください。
- 8. モデルのtsvectorタイプの列を定義してください
- 9. コンフィギュレーションファイルからデータ構造を定義してください
- 10. Node.jsでgraphQLSchemaを適切に定義してください
- 11. Railsでコントローラーアクションの期待パラメーターを定義してください
- 12. LISPの定義を参照してください
- 13. ユーザ定義ドメインのURLを書き直してください
- 14. "Completed"の定義を変更してください
- 15. NEST APIの引数定義を説明してください
- 16. スタックオーバーフロー例外を定義してください - C#
- 17. コアデータに関係タイプを定義してください
- 18. node-orm2のカスタムドライバを定義してください
- 19. IBOutletをプロパティとして定義する方法を教えてください。
- 20. 「外部」というテーブルを使用してください
- 21. _DEBUGが定義されている場合、NDEBUGを定義しないでください。
- 22. Swift 3.0:Legacy Swift言語バージョンを使用してください
- 23. Android用Facebook SDKの言語を変更してください
- 24. カルマンフィルタのプロセスノイズの用語を説明してください
- 25. 通常の言語を使用してください
- 26. redux-promiseで 'ディスパッチ'を定義しないでください
- 27. redexで小さな言語を定義しようとしています
- 28. Qt Creatorのリリースビルド専用のプリプロセッサ定義を追加してください
- 29. エラーC1189:#エラー:ご使用のプラットフォームを定義してください
- 30. 定数が既に定義されていることを確認してください。
シングルバイト文字を表すために使用されるバイト数は128よりすなわち以下、常に7ビットであり、マルチバイト文字を表すために使用されるバイトは常に8ビットであり、すなわち、最上位を有しますつまり、127より大きい。したがって、バイトが128より小さい場合、UTF-8のマルチバイト・セーフになります。他のエンコーディングは、マルチバイト・セーフに対して異なる最大値を持つことがあります。 – Matt