「文字」ごとにビットまたはバイトはいくつありますか?
「文字」ごとにビットまたはバイトはいくつありますか?
回答:
文字とは何か、それがどのエンコーディングにあるかによって異なります。
8ビットASCIIエンコーディングのASCII文字は8ビット(1バイト)ですが、7ビットに収まる場合があります。
ISO-8859-1エンコーディングのISO-8895-1文字は8ビット(1バイト)です。
UTF-8エンコーディングのUnicode文字は、8ビット(1バイト)〜32ビット(4バイト)です。
UTF-16エンコードのUnicode文字は16(2バイト)から32ビット(4バイト)の間ですが、一般的な文字のほとんどは16ビットを使用します。これは、Windowsで内部的に使用されるエンコードです。
UTF-32エンコーディングのUnicode文字は常に32ビット(4バイト)です。
UTF-8のASCII文字は8ビット(1バイト)で、UTF-16-16ビットです。
ISO-8895-1(0xA0-0xFF)の追加(非ASCII)文字は、UTF-8およびUTF-16で16ビットを使用します。
つまり、ビットには0.03125から0.125の文字があることになります。
1バイトは8ビットです(通常、Windowsでは)。
ただし、文字を扱う場合は、文字セット/エンコーディングに依存します。Unicode文字は2バイトまたは4バイトになる可能性があるため、16ビットまたは32ビットになりますが、Windows-1252が誤ってANSIと呼ばれることもあるのは、1バイトだけなので8ビットです。
Windowsのアジアバージョンおよびその他のバージョンでは、システム全体が2バイトで実行されるため、文字は16ビットです。
編集済み
Matteoのコメントによれば、Windowsの最新バージョンはすべて、文字ごとに内部的に16ビットを使用しています。
wchar_t
)で実行されます。新しいアプリケーションをすべて実行する必要があります。(Linuxでは、代わりに、通常システム全体でUTF-8が使用されるため、まったく別の話です)
char
Unicode文字列はwchar_t
タイプを使用して格納される一方で、それらは複数として格納されます。ちなみに、NTが開始されたときはwchar_t
サロゲートペアを回避するのに十分でしたが、UTF-16であるwchar_t
ため、文字列は可変長文字を持つことができるため、WindowsではUnicode文字は2から4バイト(1または2 wchar_t
)。
:)