日期:2014-05-18  浏览次数:20791 次

请问为什么在C#里中文长度被识别为单字节?
请问为什么在C#里中文长度被识别为单字节?

在VB6.0的时候,可以使用lenb()这个函数能以双字节方式来统计中文长度,而小弟我接触C#后,为什么中文是以单字节来统计长度的?
请问如何在C#下,使用双字节的形式来统计中文长度?

如:VB6.0
n=lenb("你好") 得到的结果为n=4

而为什么在C#里我使用
m = "你好";
resize = m.Length;

得到的结果是resize=2

请问如果让resize=4?

------解决方案--------------------
看下MSDN

C# code
string test = "你好abc";  
int clen = test.Length;  //这样是字符数
int blen = System.Text.Encoding.Default.GetByteCount(test);  //这样才是字节数

------解决方案--------------------
什么叫正确长度?.net里的字符是unicode的
你如果想获取字串的字节数,应该可以用Encoding类的
GetByteCount方法吧
System.Text.Encoding.Default.GetByteCount(str_zzz);
Default使用系统默认的code page
------解决方案--------------------
转:
//取字符串长度
s = "iam方枪枪";
int len = s.Length;//will output as 6
byte[] sarr = System.Text.Encoding.Default.GetBytes(s);
len = sarr.Length;//will output as 3+3*2=9