-1

Base64 ( 2^6 ) は通常、文字のサブセットを使用します

a-z, A-Z, 0-9, / , +

非印字文字は使用できないため、ASCII で定義されている 128 文字すべてを使用するわけではありません。

ただし、各文字は 2^8 のスペースを占有します。

これにより、33% ( 4/3 ) の無駄なスペースが発生します。

256 の印刷可能な文字を持つ UTF-8 のサブセットを使用できないのはなぜですか。したがって、上記の限定されたサブセットの代わりに、豊富な UTF を使用して 8 ビットすべてを埋めることができます。

この方法なら損はありません。

4

3 に答える 3

3

Base64 は、電子メールや XML など、8 ビット データをサポートしないシステムで任意の 8 ビット データをエンコードするために使用されます。7 ビット ASCII 文字の使用は意図的であるため、電子メールなどの 7 ビット システムを通過できます。ただし、世界で唯一のデータ エンコーディング形式ではありません。たとえば、yEnc は、base64 よりも圧縮率がわずかに優れている傾向があります。また、データの大部分が ASCII 互換である場合、Quoted-Printable はほぼ 1 対 1 です。

UTF は、任意のバイナリ データではなく、Unicode テキストをエンコードするためのものです。限目。

データと用途に適したエンコーディングを選択してください。意図されていないことをエンコーディングに結び付けようとしないでください。

于 2013-09-20T23:31:09.020 に答える
1

256 の印刷可能な文字を持つ UTF-8 のサブセットを使用できないのはなぜですか。したがって、上記の限定されたサブセットの代わりに、豊富な UTF を使用して 8 ビットすべてを埋めることができます。

ASCII 範囲 (それぞれ 1 バイトとして UTF-8 でエンコードされた) からの 94 個の非スペース印刷可能文字と、U+0080 から U+07FF 範囲のどこかからの 162 文字 (UTF-8 でエンコードされた) を含むサブセットを使用したとします。それぞれ 2 バイトとして)。値が均一に分布していると仮定すると、データ 1 バイトあたり平均 1.6328125 バイトのテキストが必要になります。これは、Base64 の 1.3333333 よりも効率的ではありません。

于 2013-09-19T22:53:08.343 に答える