zoukankan      html  css  js  c++  java
  • ASCII,Unicode,UTF

    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("--------------------------------------------");
                    }
                }

  • 相关阅读:
    数全排列问题
    DNA repair问题
    分治问题
    贪心问题
    STL简单应用问题
    求一个数阶乘后位数问题
    《DSP using MATLAB》Problem 2.6
    《DSP using MATLAB》示例Example 10.4
    《DSP using MATLAB》Problem 2.5
    《DSP using MATLAB》Problem 2.4
  • 原文地址:https://www.cnblogs.com/zzunstu/p/3397232.html
Copyright © 2011-2022 走看看