精选文章 关于编码的笔记

关于编码的笔记

作者:dftz571179 时间: 2021-02-07 01:37:34
dftz571179 2021-02-07 01:37:34
【摘要】(根据【金角大王alex】博客整理) 
 编码概述: 
 首先来看一下不同的编码方式: 
 ASCII 占1个字节,只支持英文GB2312 占2个字节,支持6700+汉字GBK GB2312的升级版,支持21000+汉字Shift-JIS 日本字符ks_c_5601-1987 韩国编码TIS-620 泰国编码
   由于每个国家都有自己的字符,所以其对应关系也涵盖了自己国家的字符,但是以上编...

(根据【金角大王alex】博客整理)

编码概述:

首先来看一下不同的编码方式:

  • ASCII 占1个字节,只支持英文
  • GB2312 占2个字节,支持6700+汉字
  • GBK GB2312的升级版,支持21000+汉字
  • Shift-JIS 日本字符
  • ks_c_5601-1987 韩国编码
  • TIS-620 泰国编码

  由于每个国家都有自己的字符,所以其对应关系也涵盖了自己国家的字符,但是以上编码都存在局限性,即:仅涵盖本国字符,无其它国家字符的对应关系。应运而生出现了万国码(Unicode),它涵盖了全球所有的文字和二进制的对应关系:

Unicode:

  • Unicode 2-4字节已经收录了136690个字符,目前还在不断扩张中...

Unicode有两个作用:

  1. 直接支持全球所有语言,每个国家都可以不再使用自己之前的就编码了(类似于英语是全球的通用语言)

  2. unicode包含了和全球所有国家编码的映射关系。

  Unicode虽然解决了字符和二进制之间的关系,但是使用Unicode存储一个字符太浪费内存空间了,例如使用ASCII存储“Python”字符串仅仅需要6个字节,但是使用unicode则需要十二个字节。

  使用Unicode编码在硬盘或者内存上存储空间过大的问题还是个小事情,但是在进行网络传输上则存在较大的问题,以"Python"这个字符串为例,使用Unicode相比ASCII则需要多传一倍的内容,但是本质上传输的内容还是相同的。

  为了解决存储空间过大和网络传输增加带宽的问题,出现了Unicode Transformation Format(即UTF),它的作用是对unicode进行转换,以便于在存储和网络传输时可以节省空间。

UTF:

  • utf-8:是通用1、2、3、4个字节表示所有字符;优先使用1个字节,无法满足则增加一个字节,最多4个字节。
    • 英文:1个字节
    • 欧洲语系:2个字节
    • 东亚:3个字节
    • 其它及特殊字符:4个字节
  • utf-16:使用2、4个字节表示所有字符;优先使用2个字节,否则使用4个字节表示。
  • utf-32:使用4个字节表示所有字符。

  UTF是为unicode编码设计的一种在存储和传输时节省空间的编码方案。

字符在硬盘上的存储:

无论字符以什么编码在内存里显示,存到硬盘上都是2进制。

存储到硬盘上时以何种编码存的,再从硬盘上读出来,就必须以何种编码读,不然就会出现乱码。

编码的转换:

unicode其中的一个功能是其包含了和全球所有国家编码的映射关系,换一句话说,就是使用gbk编码的“刘十一”,unicode能自动知道它在unicode中的“刘十一”的编码是什么。

 

 在python2中,python文件默认的以ascii格式进行编码:

>>> import sys
>>> sys.getdefaultencoding()
'ascii'

在python3中, python文件默认以utf-8方式进行编码:

 liushiyi@bizhehaodeMacBook-Air  ~  python3
Python 3.6.3 (v3.6.3:2c5fed86e0, Oct  3 2017, 00:32:08)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

关于编码的笔记1

Python3的执行过程:

  1. 解释器找到代码文件,把代码字符串按文件头定义的编码加载到内存,转成unicode;

  2. 把代码字符串按照语法规则进行解释;

  3. 所有的变量字符都会以unicode编码进行声明。

转载于:https://www.cnblogs.com/liushiyi/p/8108997.html

勿删,copyright占位
您找到想要的结果了吗?
关于编码的笔记
提交成功!非常感谢您的反馈,我们会继续努力做到更好
分享文章到微博
分享文章到朋友圈

上一篇:C语言博客作业--结构体

下一篇:AI安全初探——利用深度学习检测DNS隐蔽通道

您可能感兴趣

  • 传智播客李勇Jdbc视频笔记(7-17)

    7、PerparedStatement的应用: 在上面的例子中,我们看到了在构造sql语句的时候使用拼串的方式会有sql注入的问题,这个时候我们可以用 PreparedStatement 来解决这个问题 public void read(String name) { ......

  • c++笔记之CArray函数

    谨以此文献给因为我菜鸡同时装了VS2013和2017导致vs各种冲突,以至于只能重装系统的新电脑!哭泣....

  • Java笔记-多线程之线程同步

    线程同步的引入 问:为何要使用同步? 答:Java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之...

  • BufferedImage操作图片笔记

    BufferedImage是Image的一个子类,BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,通常用来做图片修改操作如大小变换、图片变灰、设置图片透明或不透明等。 BufferedImage bufferedImage = ImageIO.read(new FileInputStre...

  • SpringMVC笔记三:处理模型数据

    处理模型数据 Spring MVC 提供了以下几种途径输出模型数据: 1.1.ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加模型数据 /* ...

  • 庆祝一下,Android视频采集+H264编码成功

    编码器使用的是x264的开源库, 很容易看懂的 简单的封装了一个JNI库 编码库在BBS里 CSDN的资源太难用了 http://www.eoeandroid.com/forum.php?mod=viewthread&tid=52739&extra= x264的编译放方法 export ARM_ROOT=$ANDROID_...

  • 考研笔记 | 数据结构 §1.数据结构

    算法具备:可执行性、确定性、有穷性(输入、输出)。数据项是构成数据元素的最小单位。数据结构:逻辑结构、存储结构、数据的运算。逻辑结构:集合、线性结构、树型结构、图或网状结构。线性结构:线性表、栈与队列、串、数组。存储结...

  • FreeRTOS代码阅读笔记:heap_2.c

    FreeRTOS中对于内存的管理当前一共有5种实现方式(作者当前的版本是10.1.1),均在【 \Source\portable\MemMang 】下面,这里笔记下。 重要的参数:  使用方法: 头文件:FreeRTOSConfig.h 配置参数: configTOTAL_HEAP_SIZE 定义系统所用的堆栈大小。 c...

CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。
关于编码的笔记介绍:华为云为您免费提供关于编码的笔记在博客、论坛、帮助中心等栏目的相关文章,同时还可以通过 站内搜索 查询更多关于编码的笔记的相关内容。| 移动地址: 关于编码的笔记 | 写博客