确切地说:字符串长度是否等于字节大小?语言是否重要?
我想是的,但我只是想确定一下.
附加信息:我只是想知道.我的具体情况是PHP与MySQL.
答案是否定的,这就是我需要知道的全部内容.
不.零终止字符串有一个额外字节.pascal字符串(Delphi短语字符串)有一个额外的字节长度.并且unicode字符串每个字符有多个字节.
通过unicode,它取决于编码.每个字符可以是2或4个字节,甚至可以是1,2和4个字节的混合.
它完全取决于平台和表示.
例如,在.NET 中,每个UTF-16代码点的字符串在内存中占用两个字节.但是,代理对需要两个UTF-16值作为U + 100000到U + 10FFFF范围内的完整Unicode字符.内存中的形式也有字符串长度的开销,可能还有一些填充,以及类型指针的正常对象开销等.
现在,当您从.NET写入磁盘(或网络等)的字符串时,您指定编码(大多数类默认为UTF-8).此时,大小在很大程度上取决于编码.ASCII每个字符总是占用一个字节,但是非常有限(没有重音等); UTF-8使用可变编码提供完整的Unicode范围(所有ASCII字符都以单个字节表示,但其他字符占用更多).对于任何Unicode字符,UTF-32总是使用恰好4个字节 - 列表继续.
如您所见,这不是一个简单的主题.要确定一个字符串将要占用多少空间,你需要确切地指定情况 - 它是否是某个平台上的内存中的对象(如果是这样,哪个平台 - 甚至可能直到实现和操作系统设置),或者它是否是原始编码形式,如文本文件,如果是,使用哪种编码.
这取决于你所说的"长度".如果你的意思是"字符数",那么,不,许多语言/编码方法每个字符使用多个字节.