5

同じテキストの文字列が 2 つある場合、1 つは UTF-8、もう 1 つは UTF-16 です。UTF-8 文字列が常にUTF-16 文字列よりも小さい、または同じサイズである
と想定しても安全ですか? (バイト単位)

4

2 に答える 2

16

いいえ、通常は UTF-8 テキストの方が短くなりますが、常にそうとは限りません

U+0000 と U+FFFF の間のものはすべて、UTF-16 では 2 バイト (1 つの UTF-16 コードポイント) で表されます。

U+0800 から U+FFFF までの文字は、UTF-8 で 3 バイトで表されます。

したがって、その範囲内の文字のみ (または大部分) を含むテキストは、UTF-16 よりも UTF-8 で表した方が簡単に長くなる可能性があります。

別の言い方をすると:

  • U+0000 - U+007F: UTF-8 の方が短い (1 < 2)
  • U+0080 - U+07FF: どちらも同じサイズ (2 = 2)
  • U+0800 - U+FFFF: UTF-8 の方が長い (3 > 2)
  • U+10000 - U+10FFFF: どちらも同じサイズ (4 = 4)

5 および 6 バイト シーケンスは UTF-8定義されていましたが、最新の標準では無効になり、Unicode コードポイントを表す必要がなくなったことに注意してください。

于 2013-01-04T15:04:10.760 に答える
3

いいえ。UTF-8 では、文字のコード ポイント (数値) を表すのに必要なビット数に応じて、1 つの文字に 3 バイト以上を使用することがあります。

于 2013-01-04T15:06:57.660 に答える