"Karakter" başına kaç bit veya bayt vardır?
"Karakter" başına kaç bit veya bayt vardır?
Yanıtlar:
Karakterin ne olduğuna ve hangi kodlamada olduğuna bağlıdır:
8 bit ASCII kodlamada bir ASCII karakteri 8 bittir (1 bayt), ancak 7 bit sığabilir.
ISO-8859-1 kodlamasında bir ISO-8895-1 karakteri 8 bittir (1 bayt).
UTF-8 kodlamasındaki bir Unicode karakteri, 8 bit (1 bayt) ile 32 bit (4 bayt) arasındadır.
UTF-16 kodlamasında bir Unicode karakteri 16 (2 bayt) ile 32 bit (4 bayt) arasındadır, ancak yaygın karakterlerin çoğu 16 bit alır. Bu, Windows tarafından dahili olarak kullanılan kodlamadır.
UTF-32 kodlamasındaki bir Unicode karakteri her zaman 32 bittir (4 bayt).
UTF-8'deki bir ASCII karakteri 8 bittir (1 bayt) ve UTF-16 - 16 bittir.
ISO-8895-1'deki (0xA0-0xFF) ek (ASCII olmayan) karakterler UTF-8 ve UTF-16'da 16 bit alacaktır.
Bu, bir bitte 0,03125 ile 0,125 karakter arasında olduğu anlamına gelir.
Bir baytta 8 bit vardır (normalde Windows'ta konuşulur).
Ancak, karakterlerle uğraşıyorsanız, bu karakter grubuna / kodlamaya bağlı olacaktır. Unicode karakteri 2 veya 4 bayt olabilir, bu da 16 veya 32 bit olurken, Windows-1252 bazen yanlış olarak ANSI olarak adlandırılan sadece 1 bayt, yani 8 bit olabilir.
Windows'un Asya sürümünde ve bazılarında, tüm sistem çift baytta çalışır, bu nedenle bir karakter 16 bittir.
DÜZENLENDİ
Matteo'nun yorumuna göre, Windows'un tüm çağdaş sürümleri, karakter başına dahili olarak 16 bit kullanır.
wchar_t
), yalnızca Asya'dakilerle değil, ve böylece tüm yeni uygulamaları yapmalıdır. (Bunun yerine Linux'ta, bu tamamen farklı bir hikaye çünkü genellikle tüm sistemde UTF-8 kullanıldı)
char
, Unicode dizeleri tür kullanılarak saklanır wchar_t
. Bu arada, NT başlatıldığında a wchar_t
, vekil çiftlerden kaçınmak için yeterliydi, ancak şimdi UTF-16 olduğu için wchar_t
dizeler bile değişken uzunluklu karakterlere sahip olabilir, bu nedenle Windows'ta bir Unicode karakteri 2 ila 4 bayt (1 veya 2 wchar_t
).
:)