C#字符串(字节)的长度

这么简单的问题,我都忘记了,不知道你们还记得吗,希望你们都还记得?

using System;
public class Test
{
    public static void  Main()
    {
              string str1 = "abced.,.某某某";
              int len2 = str1.Length;
              int leng = System.Text.Encoding.Default.GetBytes(str1.ToCharArray()).Length;
              Console.WriteLine("字符串为"+str1);
              Console.WriteLine("字符串的长度"+len2);
              Console.WriteLine("字节的长度"+leng);
              Console.ReadLine();
    }
}

控制台执行结果为

对于字节的长度一个汉字是对应两个字节的

 

顺便看一下Sql Server中char nchar varchar  nvarchar

char类型: 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存储定长数据很方便,CHAR字段上的索引效率极高,比如定义char(10),那么不论你存储的数据是否达  到了10个字节,都要占去10个字节的空间。因为是固定长度,所以速度效率高。

VARCHAR:存储变长数据,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。

 

Nchar类型和Nvarchar类型是怎么一回事呢?为了与其他多种字符的转换,如中文,音标等,对每个英文(ASCII)字符都占用2个字节,对一个汉字也占用两个字节,所有的字符都占用2个字节。 


    nchar(n):包含n个字符的固定长度Unicode字符数据。n的值必须介于1与4,000之间。存储大小为n字节的两倍。
  varchar(n):变长型字符数据类型,存储最长长度为8,000 个字符
  nvarchar(n):可变长度 Unicode 数据,其最大长度为 4,000 字符.字节的存储大小是所输入字符个数的两倍,就是说它是双字节来存储数据的。如果存储数据如果存在单字节时,它也是以双字节来占用存储空间的。
  varchar一般适用于英文和数字,Nvarchar适用中文和其他字符,其中N表示Unicode常量,可以解决多语言字符集之间的转换问题。

posted @ 2013-05-22 11:47  aehyok  阅读(18250)  评论(2编辑  收藏  举报