Character encoding 一个字符中有多少位或字节?

Character encoding 一个字符中有多少位或字节?,character-encoding,byte,Character Encoding,Byte,每个“字符”有多少位或字节?一个字节中有8位(通常在Windows中说) 但是,如果您正在处理字符,它将取决于字符集/编码。Unicode字符可以是2或4个字节,因此可能是16或32位,而有时错误地称为ANSI的字符只有1个字节,所以是8位 在亚洲版本的Windows和其他一些系统中,整个系统以双字节运行,因此一个字符为16位 已编辑 根据Matteo的评论,所有当代版本的Windows都在每个字符内部使用16位。这取决于字符是什么以及采用什么编码: 8位ASCII编码中的ASCII字符是8位

每个“字符”有多少位或字节?

一个字节中有8位(通常在Windows中说)

但是,如果您正在处理字符,它将取决于字符集/编码。Unicode字符可以是2或4个字节,因此可能是16或32位,而有时错误地称为ANSI的字符只有1个字节,所以是8位

在亚洲版本的Windows和其他一些系统中,整个系统以双字节运行,因此一个字符为16位

已编辑


根据Matteo的评论,所有当代版本的Windows都在每个字符内部使用16位。

这取决于字符是什么以及采用什么编码:

  • 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中的ASCII字符为16位

  • ISO-8895-1(0xA0-0xFF)中的附加(非ASCII)字符将在UTF-8和UTF-16中占用16位


这意味着一位中有0.03125到0.125个字符。

您的问题和标题要求不同的内容。无论如何,我不明白你的意思,你能进一步解释一下吗?是的,我也不确定。但byte与他的头衔更为一致。一个位中的字符数意义不大,但一个字符中有多少位意义更大。但它需要上下文,如上所述。@Skurmedel:您是如何理解的?标题上也写着“比特”。@Cody Gray:看看我编辑过的答案。他的标签上写着byte,所以我猜是打字错误。不过我可能错了。@Skurmedel:我不明白。。。你还没有发布这个问题的答案。是的,我以前没有注意到标签。但我仍然倾向于认为2/3比1/3更合适。一些传统应用程序仍然使用1字节字符和本地代码页,但所有NT版本的Windows内部都使用2字节字符(UCS-2到NT4,从Windows 2000开始的UTF-16,存储为
wchar\u t
),而不仅仅是亚洲版本,所有更新的应用程序也应该如此。(在Linux上,情况完全不同,因为整个系统通常使用UTF-8)@Matteo:注意,在Windows中,双字节不一定与Unicode相同@科迪·格雷:是的,通常当你阅读“双字节”编码时,它是传统的亚洲内容,它们存储为多个
char
,而Unicode字符串则使用
wchar\t
类型存储。顺便说一句,当NT启动时,
wchar\u t
足以避免代理项对,但现在它是UTF-16,甚至
wchar\u t
字符串都可以有可变长度的字符,所以在Windows中,Unicode字符可以占用2到4个字节(1或2
wchar\u t
)@Matteo:是的,我同意你的看法。我想在你编辑你的第一条评论之前,我看到了一些不同的建议,那就是我写我自己评论的时候。UTF-16 Unicode字符串现在在所有版本的Windows内部都使用。@Cody Gray:我倾向于过多地编辑我的注释,这会导致混淆
:)
这个答案在处理套接字、编码、文本等方面很有帮助。