当前位置:编程学习 > C#/ASP.NET >>

中文字符串的长度

string a = "中文12345"
a.length为什么等于7,而不是9? --------------------编程问答-------------------- 你那是字符串的长度。
string a = "中文12345";
Console.WriteLine(Encoding.Default.GetBytes(a).Length + "");//输出9 --------------------编程问答-------------------- length是char个数
Encoding.Default.GetByteCount(a); --------------------编程问答-------------------- 1楼+1  你那是字符串长度不是字节长度 --------------------编程问答--------------------
引用 3 楼 vb763305825 的回复:
1楼+1  你那是字符串长度不是字节长度


什么“字节长度”?如果说这个,就又是一个误解了。

在.net中,字符使用unicode编码,也就是说这个字符串占14个字节,根本不是什么9个字节!

这个Default是什么意思,要搞清楚。千万不要胡乱地望文生义。 --------------------编程问答-------------------- 我说“这个字符串站14个字节”也不准确,因为还有别的内部结构占用空间。但是就算是仅仅看理论上的编码之后的字节,也不能胡乱望文生义地说“是9个字节”的。

同样的程序,如果你拿到别的语言版本的操作系统,它的Default就会变化。这就是Default的意义。

如果把这个Default看成是“中文在.net中的编码”,这就是完全错误的。 --------------------编程问答-------------------- 最终结论是啥呢 --------------------编程问答-------------------- http://hi.baidu.com/lanshy/item/1002f095df54f2b282d29572 --------------------编程问答-------------------- 一个汉字的ASCII编码的长度是一个英文字母或阿拉伯数字的ASCII编码的长度2倍,但论到整个字符的长度,一个汉字的长度就是1,一个英文字母或阿拉伯数字的长度也是1 --------------------编程问答-------------------- 中这个也是一个字符.
C#,Java中是用unicode 所以Char是2个字节.而string length是char的个数 --------------------编程问答-------------------- 谢谢楼上各位大神!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,