Wie viele Bits oder Bytes gibt es pro "Zeichen"?
Wie viele Bits oder Bytes gibt es pro "Zeichen"?
Antworten:
Es hängt davon ab, was das Zeichen ist und in welcher Kodierung es sich befindet:
Ein ASCII-Zeichen in 8-Bit-ASCII-Codierung ist 8 Bit (1 Byte), kann jedoch in 7 Bit passen.
Ein ISO-8895-1-Zeichen in der ISO-8859-1-Codierung besteht aus 8 Bit (1 Byte).
Ein Unicode-Zeichen in der UTF-8-Codierung liegt zwischen 8 Bit (1 Byte) und 32 Bit (4 Byte).
Ein Unicode-Zeichen in der UTF-16-Codierung liegt zwischen 16 (2 Byte) und 32 Bit (4 Byte), obwohl die meisten gängigen Zeichen 16 Bit benötigen. Dies ist die von Windows intern verwendete Codierung.
Ein Unicode-Zeichen in der UTF-32-Codierung ist immer 32 Bit (4 Byte).
Ein ASCII-Zeichen in UTF-8 ist 8 Bit (1 Byte) und in UTF-16-16 Bit.
Die zusätzlichen (Nicht-ASCII-) Zeichen in ISO-8895-1 (0xA0-0xFF) würden in UTF-8 und UTF-16 16 Bit benötigen.
Das würde bedeuten, dass ein Bit zwischen 0,03125 und 0,125 Zeichen enthält.
Ein Byte enthält 8 Bits (normalerweise unter Windows).
Wenn Sie jedoch mit Zeichen arbeiten, hängt dies vom Zeichensatz / der Codierung ab. Unicode-Zeichen können 2 oder 4 Bytes sein, das sind also 16 oder 32 Bit, während Windows-1252, das manchmal fälschlicherweise als ANSI bezeichnet wird, nur 1 Byte, also 8 Bit, ist.
In der asiatischen Version von Windows und einigen anderen wird das gesamte System in Doppelbyte ausgeführt, sodass ein Zeichen 16 Bit groß ist.
BEARBEITET
Laut Matteos Kommentar verwenden alle modernen Windows-Versionen intern 16 Bit pro Zeichen.
wchar_t
), nicht nur asiatische. und so sollten alle neueren Anwendungen tun. (Unter Linux ist es stattdessen eine ganz andere Geschichte, da normalerweise UTF-8 im gesamten System verwendet wird.)
char
, während Unicode-Zeichenfolgen unter Verwendung des wchar_t
Typs gespeichert werden . Übrigens, als NT gestartet wchar_t
wurde, reichte a aus, um Ersatzpaare zu vermeiden, aber jetzt, da es sich um UTF-16 handelt, können sogar wchar_t
Zeichenfolgen Zeichen variabler Länge haben, sodass unter Windows ein Unicode-Zeichen 2 bis 4 Bytes (1 oder 2) dauern kann wchar_t
).
:)