测试一下
学习字符编码的问题:解决乱码问题 数据 从 硬盘 => 内存 => cpu
应用程序打开文本文件的三步骤
1.打开应用程序
2.将数据加载到内存中
3.cpu将内存中的数据直接翻译成字符显示给用户 python解释器
1.打开python解释器
2.将数据加载到内存中
3.cpu将内存中的数据解释执行将结果显示给用户,如何解释执行不能通过,将错误信息提供给用户 编码的发展史
电脑只能识别高低电频对应的0,1信息 => 问题:如何将世间万物信息存放到内存中
世间万物信息 => 0,1形式的数据 => 电脑中存放,将该过程逆向操作,就是访问已存储的数据信息 编码表
人能识别的字符 <=> 机器能识别的字符:一定存在一种固定的对应关系
编码表:一定范围内人能识别的字符与机器能识别的字符形成的对应关系表(映射表) 1.ASCII表:英文字母、英文符号、数字与机器能识别的字符的对应关系表,8个二进制位就能存放完这所有的对应关系 => 1字节
python2采用的默认编码是ASCII,早期并不支持中文编程
2_1.GBK:中文与与机器能识别的字符的对应关系表(完全兼容ASCII表),16个二进制位能存放所有汉字与ASCII之前的对应关系 => 2个字节
2个字节能否存放常用汉字 => 16个二进制位 2^15
print(pow(2, 15))
2_2.Shift_JIS | Euc-kr:日文 | 韩文 与机器能识别的字符的对应关系表(完全兼容ASCII表) 乱码:存的编码格式与取的编码格式不一致
3.Unicode万国码:世间中常用国家的常用字符与机器能识别的字符的对应关系表 转码:Unicode存在汉字与二进制对应关系,GBK也存在汉字与二进制对应关系,将GBK存放的数据转存到Unicode数据 均采用Unicode编码表,只是存放数据采用字节数不一致,utf-8与utf-16是Unicode编码表的两种体现方式
utf-8:以1个字节存放英文,以3 | 6个字节存放汉字,在英文数据过多时,更深空间,用来传输效率更高
utf-16:所有支持的符号都采用2个字节存放,读存数据采用定长,不用计算,读存效率高 硬盘到内存需要数据的传输,内存到CPU需要数据的传输,所有都采用utf-8
内存需要高速读写,采用utf-16 # 学习的结晶:编码与解码要统一编码
# 操作文本字符 res = "汉字呵呵".encode('utf-8') # 编码:将普通字符串转化为二进制字符串
print(res)
# 输出: b'\xe6\xb1\x89\xe5\xad\x97\xe5\x91\xb5\xe5\x91\xb5' res = b'\xe5\x91\xb5\xe5\x91\xb5'.decode('GBK') # 解码:将二进制字符串转化为普通字符串
print(res)
# 输出: 鍛靛懙 res = b'\xe5\x91\xb5\xe5\x91\xb5'.decode('utf-8')
print(res)
# 输出: 呵呵
 

字符编码:
编码表:人能识别的符号与机器能识别的符号(01组成的二进制码)映射关系
py2:ASCII,常用ASCII表只有英文、数字、英文符号与与机器能识别的符号的对应关系
py3:utf-8,是unicode编码表的一种实现方式,采用变长存储数据,字母数字简单符号1个字节,中文3~6字节

utf-8: 变长,在英文数字较多时,更节省空间,用于传输,cpu与硬盘中采用的编码格式
utf-16: 定长,英文数字汉字都是采用2个字节,读存效率高,内存中采用的编码格式

gbk => utf-8: 转码
普通字符串 => 二进制字符串:编码,目的是用于传输数据 'abc'.encode('utf-8')
二进制字符串 => 普通字符串:解码,目的是用于显示数据 b'abc'.decode('utf-8')

 

PythonStudy——字符编码 Character Encoding的更多相关文章

  1. C# 字符编码类Encoding

    在网络通信中,很多情况下都是将字符信息转成字节序列进行传输.将字符序列转为字节序列的过程称为编码.当这些字节传送到接收方,接收方需要逆向将字节序列转为字符序列.这个过程就是解码. 常见编码有ASCII ...

  2. 字符集与字符编码 (charset & encoding)

    乱码是个大坑,相信每个人都遇过,而且是个绕不过去的坑.我理解每个程序员都应该写一篇编码相关的博文,梳理自己对这一块的理解,下面是我反复理解多次之后的学习小结. 1.从记事本的不同编码说起: 打开记事本 ...

  3. 关于Unicode,字符集,字符编码,每个程序员都应该知道的事

    关于Unicode,字符集,字符编码,每个程序员都应该知道的事 作者:Jack47 李笑来的文章如何判断一个人是否聪明?中提到: 必要.清晰.且准确的概念,是一切思考的基石.所谓思考,很大程度上,就是 ...

  4. Windows程序员必须知道的字符编码和字符集

     字符编码 (Character encoding) 在存储和传递文本过程中,为了使得所有电脑都能够正确的识别出文本内容,需要有一个统一的规则. 2. 字符集 (Character Set) ) 一般 ...

  5. 关于Unicode,字符集,字符编码

    基本概念 字符[character] 字符代表了字母表中的字符,标点符号和其他的一些符号.在计算机中,文本是由字符组成的. 字符集合[character set] 由一套用于特定用途的字符组成,例如支 ...

  6. Python 的字符编码

    配置: Python 2.7 + Sublime Text 2 + OS X 10.10 本文意在理清各种编码的关系并以此解决 Python 中的编码问题. 1 编码基本概念 只有先了解字符表.编码字 ...

  7. Java之字符编码和字符集

    什么是字符编码 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字.英文.标点符号.汉字等字符是二进制数转换之后的结果.按照某种规则,将字符存储到计算机中,称为编码 .反之,将存储在计算 ...

  8. 字符编码和字符集和编码引出的问题_FileReader读取GBK格式的文件

    字符编码 计算机中鵆的信息都是用二进制数表示的,而我们在屏幕上看到的数字.英文.标点符号.汉子等字符都是二进制数转换之后的结果.按照某种规则,将字符存储到计算机中,称为编码.反之,将存储在计算机中的二 ...

  9. Python2.7字符编码详解

    目录 Python2.7字符编码详解 声明 一. 字符编码基础 1.1 抽象字符清单(ACR) 1.2 已编码字符集(CCS) 1.3 字符编码格式(CEF) 1.3.1 ASCII(初创) 1.3. ...

随机推荐

  1. 用GraphX分析伴生网络(二)

    8. 过滤噪声边 在当前的伴生关系中,边的权重是基于一对概念同时出现在一篇论文中的频率来计算的.这种简单的权重机制的问题在于:它并没有对一对概念同时出现的原因加以区分,有时一对概念同时出现是由于它们具 ...

  2. scala面试题总结

    一.scala语言有什么特点?什么是函数式编程?有什么优点? 1.scala语言集成面向对象和函数式编程 2.函数式编程是一种典范,将电脑的运算视作是函数的运算. 3.与过程化编程相比,函数式编程里的 ...

  3. 字节顺序标记——BOM,Byte Order Mark

    定义 BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码.     介绍 UTF-8 不需要 BOM,尽管 Unico ...

  4. sparse_tensor feed_dict的时候十分不方便。

    假如说,你再处理文本的时候,写tfrecord的时候用的变长的类型, example = tf.train.Example(features=tf.train.Features(feature={ ' ...

  5. PAT 1081 Rational Sum

    1081 Rational Sum (20 分)   Given N rational numbers in the form numerator/denominator, you are suppo ...

  6. 【CUDA】Win10 + VS2017新 CUDA 项目配置

    一.新建项目 打开VS2017 → 新建项目 → Win32控制台应用程序 → “空项目”打钩 二.调整配置管理器平台类型 右键项目 → 属性 → 配置管理器 → 全改为“x64” 三.配置生成属性 ...

  7. UVa 10905 - Children's Game 排序,题目没有说输入是int 难度: 0

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  8. HTML DOM 属性

    innerHTML 属性 获取元素内容的最简单方法是使用 innerHTML 属性. innerHTML 属性对于获取或替换 HTML 元素的内容很有用. 实例 下面的代码获取 id="in ...

  9. Ubuntu 12.04安装教程详细步骤(图解)

    1.选择你所想要的语言,如图. 2.选择安装Ubuntu(I). 3.进入Ubuntu安装等待 4.设置处理器信息 5.同意选择的语言 6.配置键盘信息 7.键盘布局选择汉语 8.配置键盘选择汉语 9 ...

  10. nginx搭建以及其配置文件

    nginx搭建: 参考link:https://blog.csdn.net/wxyjuly/article/details/79443432 nginx配置文件详解: 参考link:https://w ...