• 字符编码


    1、程序执行的的三大核心硬件
    cpu
    内存
    硬盘
    正在执行一个程序的要点:
    1、将硬盘中的数据读到内存
    2、由cpu读内存中的数据进行执行
    3、在执行程序的时候,生成的数据,优先存入内存
    2、python解释器执行一个py文件过程
    如果没有python解释器,py文件单纯就是一个文本文件
    所以说,想执行py文件,必须先执行python解释器
    1、将python解释器的代码由硬盘读到内存
    2、将py文件以普通文本文件的格式由硬盘读到内存
    3、python解释器去内存中读取py文件的数据
    4、识别python语法,执行相应的操作
    字符编码:
    字符:世界上一切语言、文字
    有必要考虑,图片文件,音频文件、视频文件?
    没有必有,因为它们已经有固定的格式
    文件的输入和输出是两个过程
    人类输入的内容都是人类自己可以识别的字符
    计算机只能识别010101二进制字符
    将人类的字符,存入内存和硬盘,要经历一个过程
    人类的字符>>>>>>> (字符编码表) >>>>>>>>>计算机二进制
    0 a
    1b
    01 a
    10 b
    00 c
    11 d
    ASCII码表(美国) 用八位二进制来代表一个英文字符(所有的英文字符+符号一共大概128左右) 0000 0000 1111 1111 最多只能表示255位

    八位二进制 = 8 bit
    8 bit = 1 bytes
    1024bytes = 1KB
    1024KB = 1MB
    1024MB = 1GB
    1024GB = 1TB
    1024TB = 1PB

    GBK(中国)
    用2个bytes来代表一个字符,兼容英文字符
    0000 0000 0000 0000
    1111 1111 1111 1111
    最多可以表示65535位
    shift(日本)

    kr(韩国的)

    万国码(unicode)

    为了兼容所有的国家的字符,生成unicode
    所有的字符都用2bytes
    0101 0101 a
    0000 0000 0101 0101 a
    1、占用存储空间
    2、io次数增加,程序运行速度变慢(最致命)

    在unicode二进制数据存入硬盘的时候,做优化

    utf-8:
    utf-8只与unicode有对应关系
    unicode transformation format

    所有的英文字符用1个bytes表示
    所有的中文字符用3个bytes表示

    现在的计算机:
    内存都是:unicode
    硬盘都是:utf-8

    需要掌握:
    1、用户无论输入什么字符,存入内存,unicode都可以兼容
    2、硬盘中无论是什么编码的文件,读到内存,都可以兼容unicode

    数据的传输:
    优先以自己的本国字符编码进行传递

    必须掌握(******)
    (内存)unicode二进制字符 >>> 编码(encode) >>> (硬盘)utf-8二进制字符
    (硬盘)utf-8二进制字符 >>> 解码(decode) >>> (内存)unicode二进制字符

    (******)
    保证不乱码核心:
    用什么编码存的数据,就用什么编码取

    python2 :
    默认的字符编码ascii码(因为当时的unicode还没盛行)
    python3:
    默认的字符编码utf-8

    文件头:

    coding:utf-8

    用英文字符,是为了让所有的计算机都可以识别

    pycharm默认的字符编码是:
    utf-8
    windows操作系统默认字符编码:
    gbk深浅拷贝
    浅拷贝:数据半共享(复制其数据独立内存存放,但是只拷贝成功第一层)
    深拷贝:数据完全不共享(复制其数据完完全全放独立的一个内存,完全拷贝,数据不共享)
    import copy
    l1 = [257, 'a', [4, 5, 6]]
    print(l1)
    print(id(l1))

    print(id(l1[0]))

    l2 = copy.deepcopy(l1) # [1, 'a', [4, 5, 6]]
    l2[2][0] = 4444
    print(l2)
    print(id(l2))
    print("l1:", l1)
    print("id_l1:", id(l1)

  • 相关阅读:
    IL查看泛型
    IL查看委托
    IL查看override
    为VS集成IL环境
    HashTable Dictionary HashMap
    C#集合类
    Resharper团队协作之TODO
    怪物彈珠Monster Strike 攻略
    [Editor]Unity Editor类常用方法
    C# Reflection BindingFlags
  • 原文地址:https://www.cnblogs.com/everuse/p/11815031.html
Copyright © 2020-2023  润新知