每个“字符”有多少位或字节?
每个“字符”有多少位或字节?
Answers:
它取决于什么是字符以及它的编码形式:
尽管可以容纳7位,但采用8位ASCII编码的ASCII字符为8位(1字节)。
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中的ASCII字符为16位。
ISO-8895-1(0xA0-0xFF)中的其他(非ASCII)字符在UTF-8和UTF-16中将采用16位。
那将意味着一点在0.03125到0.125个字符之间。
字节中有8位(通常在Windows中)。
但是,如果要处理字符,则取决于字符集/编码。Unicode字符可以为2或4个字节,因此可以为16或32位,而Windows-1252有时被错误地称为ANSI的只有1个字节,因此为8位。
在亚洲版本的Windows和其他版本的Windows中,整个系统以双字节运行,因此字符为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
)。
:)