某些字符比其他字符占用更多字节吗?

Tom*_*Tom 4 size bandwidth character character-encoding delimiter

我对低级别的东西不是很有经验,比如字符的字节数.我试着找出一个字符是否等于一个字节,但没有成功.

我需要设置一个用于服务器和客户端之间的套接字连接的分隔符.此分隔符必须尽可能小(以字节为单位),以最小化带宽.

当前分隔符是"#".获得另一个分隔符会减少我的带宽吗?

Mic*_*rdt 16

这取决于您使用什么字符编码在字符和字节之间进行转换(这些都不是完全相同的):

  • 在ASCII或ISO 8859中,每个字符由一个字节表示
  • 在UTF-32中,每个字符由4个字节表示
  • 在UTF-8中,每个字符使用1到4个字节
  • 在ISO 2022中,它要复杂得多

US-ASCII字符(其中#是一个)在UTF-8中只占用1个字节,这是允许多字节字符的最流行的编码.

  • 除UTF-16和UTF-32外,US-ASCII字符在几乎*任何*编码中占用1个字节. (2认同)

Con*_*lls 5

这取决于编码.在ANSI等单字节字符集和各种ISO8859字符集中,每个字符一个字节.某些编码(如UTF8)是可变宽度,其中编码字符的字节数取决于要编码的字形.


Sco*_*ein 5

答案当然是视情况而定。如果您使用纯 ASCII 环境,那么是的,每个字符占用 1 个字节,但如果您使用 Unicode 环境(例如所有 Windows),则字符的大小范围为 1 到 4 个字节。

如果您从 ASCII 集中选择一个字符,那么是的,您的分隔符尽可能小。