ASCII:

数字:48-57
空格:32
大写英文:65-90
小写英文:97-122

 

 几个结论:

  • ASCII不能保存中文;
  • UTF8是变长编码。在对ASCII字符编码时,UTF更省空间,只占1个字节,与ASCII编码方式和长度相同;Unicode在对ASCII字符编码时,占用2个字节,且第2个字节补零。
  • UTF8在对中文编码时需要占用3个字节;Unicode对中文编码则只需要2个字节。

===============================程序如下===================================

            string s1 = "b";
            string s2 = "";

            Console.WriteLine("----------------ASCII-----------------");

            Console.WriteLine(Encoding.ASCII.GetBytes(s1).Length);
            Console.WriteLine(Encoding.ASCII.GetBytes(s2).Length);

            Console.WriteLine("----------------Default-----------------");

            Console.WriteLine(Encoding.Default.EncodingName);
            Console.WriteLine(Encoding.Default.GetBytes(s1).Length);
            Console.WriteLine(Encoding.Default.GetBytes(s2).Length);

            Console.WriteLine("----------------Unicode-----------------");

            Console.WriteLine(Encoding.Unicode.GetBytes(s1).Length);
            Console.WriteLine(Encoding.Unicode.GetBytes(s2).Length);

            Console.WriteLine("----------------UTF8-----------------");

            Console.WriteLine(Encoding.UTF8.GetBytes(s1).Length);
            Console.WriteLine(Encoding.UTF8.GetBytes(s2).Length);

 

       string[] strArray = { "b", "abcd", "", "甲乙丙丁" };
            byte[] buffer;
            string mode, back;

            foreach (string str in strArray)
            {

                for (int i = 0; i <= 2; i++)
                {
                    if (i == 0)
                    {
                        buffer = Encoding.ASCII.GetBytes(str);
                        back = Encoding.ASCII.GetString(buffer, 0, buffer.Length);
                        mode = "ASCII";
                    }
                    else if (i == 1)
                    {
                        buffer = Encoding.UTF8.GetBytes(str);
                        back = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
                        mode = "UTF8";
                    }
                    else
                    {
                        buffer = Encoding.Unicode.GetBytes(str);
                        back = Encoding.Unicode.GetString(buffer, 0, buffer.Length);
                        mode = "Unicode";
                    }

                    Console.WriteLine("Mode: {0}, String: {1}, Buffer.Length: {2}",mode, str, buffer.Length);

                    Console.Write("Buffer: ");
                    for (int j = 0; j <= buffer.Length - 1; j++)
                    {
                        Console.Write(buffer[j] + " ");
                    }
                    Console.WriteLine("");

                    Console.WriteLine("nRetrived: {0}", back);
                    Console.WriteLine("--------------------------------------------");
                }
            }

 

posted on 2013-10-30 16:54  zzunstu  阅读(296)  评论(0编辑  收藏  举报