这几天写程序要用到字符串的真实长度,可是MSsql 的len函数只能获取字的长度,无法获取真实的长度
也就是在网页里面所占的字符
因为英文“a”与中文 "的"所占的长度不同
于是google下找到函数datalength可以获得字符的真实长度
如:
select
len
(
'
aaa
'
)
--
结果为 3
select len ( ' 张三丰 ' ) -- 结果依然为 3
select datalength ( ' aaa ' ) -- 结果为 3
select datalength ( ' 张三丰 ' ) -- 结果为 6
select len ( ' 张三丰 ' ) -- 结果依然为 3
select datalength ( ' aaa ' ) -- 结果为 3
select datalength ( ' 张三丰 ' ) -- 结果为 6
-----------------------分割线------------------------------------------------------------
在sql中解决了,那么在C#程序中呢
既然sql中实际上是得到的是数据的大小,那么在c#中是不是也可以这么做呢?
程序验证如下:
int
len1
=
System.Text.Encoding.Default.GetBytes(
"
aaa
"
).Length;
//
结果为 3
int len2 = System.Text.Encoding.Default.GetBytes( " 张三丰 " ).Length; // 结果为 6
int len2 = System.Text.Encoding.Default.GetBytes( " 张三丰 " ).Length; // 结果为 6
看来结果是可用的。以后在程序中在也不用去判断字符是不是中文来计算字符串的总长度了(PS:以前我就是那么笨笨的来判断每个字符是不是中文来计算字符串总长度的 :))