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

  • 相关阅读:
    【数据分析&数据挖掘】拉格朗日插值法
    【数据分析&数据挖掘】异常值的判断与去除——3σ & 箱线图分析
    集腋成裘-13-git使用-02进阶篇
    饮冰三年-人工智能-Python-30 python开发中常见的错误
    饮冰三年-人工智能-Python-31博客园山寨版
    集腋成裘-12-git使用-01创建库
    饮冰三年-人工智能-Python-27 Django Form组件
    饮冰三年-人工智能-Python-29瀑布流
    饮冰三年-人工智能-Python-28 企业官网(组合搜索)
    使用ExtJs建一个后台界面框架
  • 原文地址:https://www.cnblogs.com/zzunstu/p/3397232.html
Copyright © 2011-2022 走看看