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

时间:2009-06-26 13:30:28

标签: size character-encoding character bandwidth delimiter

对于较低级别的事情,例如字符的字节数,我不是很有经验。我试着找出一个字符是否等于一个字节,但没有成功。

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

当前分隔符为“#”。获得另一个分隔符会降低我的带宽吗?

4 个答案:

答案 0 :(得分:15)

这取决于您在字符和字节之间进行转换的字符编码(完全不相同):

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:4)

答案当然是取决于它。如果您使用的是纯ASCII env,那么是的,每个char占用1个字节,但如果您使用的是Unicode env(例如所有Windows),则字符的大小范围为1到4个字节。

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

答案 3 :(得分:-5)

不,所有字符都是1个字节,除非您使用的是Unicode或宽字符(例如重音和其他符号)。

一个字符长度为1个字节或8位,它提供256种可能的组合以形成字符。 1个字节的字符称为ASCII字符。他们只使用7位(即使8位可用,但你不能使用这个第8位)来形成标准字母和各种符号,当电传和打字机仍然很常见时。

您可以找到ASCII图表,哪些数字对应于哪些字符here.

相关问题