zoukankan      html  css  js  c++  java
  • python ==> 字符编码

    一:文本编辑器:

      python 解释器的三步骤:

       1.python解释器启动起来,放到内存里面。

       2.python解释器,从硬盘读取一个文件,把文件的内容全都当成普通字符,先读到内存里面。

       3.python解释器可以读一行就解释一行。

    二:什么是字符编码?

      答:计算机要想工作必须通电,也就是说”电“驱使计算机干活,而”电“的特性,就是高低平。

        高电平:即 二进制数1.  低电平:即 二进制数0

        也就是说 计算机只认识 数字。

    三:计算机编码的三个阶段。

    阶段一:

      现代计算机起源于美国,最早诞生也是基于英文考虑的”ASCII”。

     ASCII:  1 Bytes == 8bit

          1KB==1024 Bytes

          1MB==1024 KB

          1GB== 1024MB

          1TB==1024 GB

          1GB= 1024*1024*1024

          8bit 可以表示为256个字符。

    阶段二:

      为了满足中文,中国人定制了GBK。

      GBK: 以2Bytes 代表一个字符。 不止中国,为了满足其他国家,

        各个国家纷纷定制了自己的编码。

      日本: Shift_Jis   韩国:Eus-kr

    阶段三:

      各国有各国的标准,就会有不可避免地出现冲突,结果就是,

      在多语言混合的文本中,显示出来会有乱码。

      于是产生了 unicode , 统一用了 2Bytes 代表一个字符。

      它以 2**16-1 = 65535 可代表6万多个字符,因而兼容万国语言。

      但是 对于都是英文文本而言,无疑多了一杯的存储空间。

      于是 产生了  utf-8, 对英文字符只用1Bytes,中文字符3Bytes。

    需要强调的是:
      unicode: 简单粗暴,所有字符都是2Bytes,
      优点是字符-》数字的转换速度快,缺点是占用空间大。

      utf-8 : 精准, 对不同的字符用不同的长度表示。
      优点是:节省空间 。
      缺点是: 字符-》数字的转换速度慢,
      因为每次都要计算出字符需要多长的Bytes才能够精准表示

    1.内存中使用的编码是 unicode .
    用空间换时间(程序都需要加载到内存才能运行,因而内存应该是尽可能的保证快)

    2.硬盘中或者网络传输用 utf-8,
    网路I/O延迟 或 磁盘I/O延迟要远大于utf-8的转换延迟,
    而且 I/O 应该是尽可能的节省带宽,保证数据传输的稳定性。

    用什么格式编码 就要 用什么格式解码。
    读的过程 是 unicode.
    执行的过程 识别代码,开辟空间,形成其他的格式编码。

    字符编码的使用:
    文本编辑器:
    内存:用unicode 格式的二进制
      ↑         ↓  

      ↑       ↓
    读取文件:

    decode           保存文件:

      ↑      encode
      ↑          ↓
    硬盘:用utf-8格式的二进制

    x = ‘钟’ :
    换编码格式之后,没执行之前,并不会出现乱码。
    执行后,会出现乱码报错,


    1.python 2 默认的是 ASCII 字符串识别的代码:

    1.str = bytes
    2.'u'
    unicode => encode(utf-8) 的结果bytes
    unicode => decode(utf-8)===>unicode


    2.python 3 默认文件编码的是 utf-8 字符串识别的代码 : unicode / bytes

    为什么用bytes? 数据要想传输,一定要转成bytes。

    第一步:python 解释器先执行,没问题
    第二步:读取文件 有问题。
    (读的时候并不知道编码格式是什么,只能用默认的,
    这样一来就出错了)

    打印到终端
    一个程序 丢给 另一个程序。 一个内存空间到另外一个内存空间。
    Windows 默认的编码是 GBK。

      

  • 相关阅读:
    oarcle 提取数字函数
    通用XML操作类(微型本地xml数据库)
    linux内核模块Makefile的解析
    开源的许可证GPL、LGPL、BSD、Apache 2.0的通俗解释
    弹性布局
    CSS基础知识
    HTML5基本标签
    VS2008开发Windows Mobile6环境搭建及模拟器联网问题图解
    .Silverlight Binding (One Time,One Way,Two Way)
    WCF Service中HttpContext.Current为null的解决办法
  • 原文地址:https://www.cnblogs.com/zhongbokun/p/7231824.html
Copyright © 2011-2022 走看看