Combien de bits ou d'octets y a-t-il par "caractère"?
Combien de bits ou d'octets y a-t-il par "caractère"?
Réponses:
Cela dépend du caractère et de l'encodage dans lequel il se trouve:
Un caractère ASCII en codage ASCII 8 bits est de 8 bits (1 octet), bien qu'il puisse tenir sur 7 bits.
Un caractère ISO-8895-1 dans le codage ISO-8859-1 est de 8 bits (1 octet).
Un caractère Unicode en codage UTF-8 est compris entre 8 bits (1 octet) et 32 bits (4 octets).
Un caractère Unicode en codage UTF-16 est compris entre 16 (2 octets) et 32 bits (4 octets), bien que la plupart des caractères courants prennent 16 bits. Il s'agit de l'encodage utilisé par Windows en interne.
Un caractère Unicode en codage UTF-32 est toujours de 32 bits (4 octets).
Un caractère ASCII en UTF-8 est de 8 bits (1 octet) et en UTF-16 de 16 bits.
Les caractères supplémentaires (non ASCII) dans ISO-8895-1 (0xA0-0xFF) prendraient 16 bits en UTF-8 et UTF-16.
Cela signifierait qu'il y a entre 0,03125 et 0,125 caractères dans un peu.
Il y a 8 bits dans un octet (normalement parlant sous Windows).
Cependant, si vous utilisez des caractères, cela dépendra du jeu de caractères / de l'encodage. Le caractère Unicode peut être de 2 ou 4 octets, donc ce serait 16 ou 32 bits, alors que Windows-1252 parfois incorrectement appelé ANSI n'est que de 1 octet donc 8 bits.
Dans la version asiatique de Windows et d'autres, l'ensemble du système fonctionne en double octet, donc un caractère est de 16 bits.
ÉDITÉ
Selon le commentaire de Matteo, toutes les versions contemporaines de Windows utilisent 16 bits en interne par caractère.
wchar_t
), pas seulement les caractères asiatiques, et donc devrait faire toutes les nouvelles applications. (Sur Linux, au contraire, c'est une histoire complètement différente puisque généralement UTF-8 est utilisé dans tout le système)
char
, tandis que les chaînes Unicode sont stockées en utilisant le wchar_t
type. À propos, lorsque NT a été lancé, cela wchar_t
suffisait pour éviter les paires de substitution, mais maintenant qu'il s'agit de UTF-16, même les wchar_t
chaînes peuvent avoir des caractères de longueur variable, donc sous Windows, un caractère Unicode peut prendre de 2 à 4 octets (1 ou 2 wchar_t
).
:)