我之前老是有这种感觉, 就是明明已经看过很多关于字符编码的资料了, 感觉字符编码相关的知识点不难理解, 觉得自己已经把字符编码给弄懂了, 但当别人问我到底什么是字符编码, Unicode是什么啊, UTF-8又是什么的时候, 我又结结巴巴的说不清楚, 或者只能给个含糊不清的回答, 老是把相关的知识点给弄混. 所以这篇博客, 就是要把字符编码给真正的搞懂, 把相关的知识点梳理清楚.

到底什么是字! 符! 编! 码?!!!

我们所理解的"字符编码(名词)"包含两个部分:

1.字符集

2.编码规则

字符集, 做了什么事情呢? 其实就是给一个字符指定一个数字编号,

就像我们每个人都会有一个身份证号一样, 通过一个身份证号可以对应某一个人,

那我们通过数字编号, 就可以对应到某个具体的字符了

所以, 简单来说, 字符集就相当于一个大的数据库, 这个数据库中包含了两个字段(列): 字符, 和字符对应的编号

+------+----------+

| 字符 | 编号 |

+------+----------+

| a | 97 |

+------+----------+

| b | 98 |

+------+----------+

编码规则, 就是如何对"字符的编号"进行编码的一种规则, 比如我们现在要将字母 "a" 保存到硬盘中,

"a"对应的编号是97, 所以我们只要保存97就行了, 按照ASCII的编码规则, 使用8位二进制数(第1位二进制为0)来进行编码,

97在经过编码后的存储格式就为01100001

为什么要有字符编码?

归根结底, 计算机只认识0和1(二进制), 不是0和1的数字, 我们可以通过位数转换, 转换成二进制

那对于字符, 计算机要怎么识别呢?

将每个字符都指定一个数字编号(字符集), 再将数字编号转为二进制(编码规则), 这样计算机就能识别了

Unicode与UTF-8

首先, Unicode也是包含两个部分: 字符集+编码规则

你可以将Unicode字符集理解为是包含了全世界大多数语言字符与字符编号的超大数据库

而UTF-8就是Unicode的一种编码规则, 除了UTF-8, 还有UTF-16、UTF-32等编码规则

UTF-32: 不管你的编号是多少, 即使是1, 我都给你转为用32位的二进制: 00000000 00000000 00000000 00000001

UTF-16: 能转为16位就转为16位, 16位不够就转为32位

UTF-8: 能转为8位就转8位, 8位不够就转16位, 16位不够就转24位, 24位不够转32位

Python2和Python3中的字符编码

python2默认字符编码是ASCII, 当你用python2的解释器去运行你写好的py2代码(硬盘中),

解释器会用ASCII的编码规则去读取, 由于ACSII编码不支持中文,

所以我们一般在py2代码首行: #encoding: utf-8来指定字符编码规则为utf-8

python3默认的字符编码是Unicode, 当你用python3的解释器去执行你写好的py3代码(硬盘中),

解释器会用UTF-8编码规则来读取

Python2和Python3中的字符串

python2中的字符串的str和unicode类型

name = "bigb" (就是py3中的bytes类型)

name = u"bigb" (就是py3中的str类型)

python3中的字符串的str和bytes类型

name = "bigb"

name = b"bigb"

注:

只是对相关概念做了简单阐述, 目的是理清字符编码的相关知识点, 如果对字符编码有深入了解的需求, 请自行查阅相关资料

python3默认的代码编码是什么-Python3 到底什么是字符编码相关推荐

  1. mysql默认字符编码设置教程:my.ini设置字符编码

    转载2016-06-07 21:49:26 标签:mysql 本文介绍了MySQL数据库中默认字符编码的设置方法,如何设置与修改mysql默认编码,my.ini设置字符编码的教程,需要的朋友参考下. ...

  2. 字符编码的前世今生——一文读懂字符编码

    文章目录 编码从故事说起 计算机的字符编码 ASCII 码表 GB2312 --中国人自己的编码表 GBK 编码 GB18030 其他编码 ISO-8859-1 Shift_JIS 和 Big5 UC ...

  3. python创建txt文件并写入 编码-Python文本文件读写操作时的字符编码问题

    说明1:文本文件的字符编码问题只存在t模式中,如:open('a.txt', mode='rt') 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须 ...

  4. python的字符编码叙述_Python: 熟悉又陌生的字符编码

    字符编码是计算机编程中不可回避的问题,不管你用 Python2 还是 Python3,亦或是 C++, Java 等,我都觉得非常有必要厘清计算机中的字符编码概念.本文主要分以下几个部分介绍: 基本概 ...

  5. python字符编码在哪里_快速入手Python字符编码

    前言 对于很多接触python的人而言,字符的处理和语言整体的温顺可靠相比显得格外桀骜不驯难以驾驭. 文章针对Python 2.7,主要因为3对的编码已经有了很大的改善并且实际原理一样,更改一下操作命 ...

  6. 字符编码在python中的处理_python 字符编码处理问题总结

    Python中常常遇到这种字符编码问题,尤其在处理网页源代码时(特别是爬虫中): UnicodeDecodeError: 'XXX' codec can't decode bytes in posit ...

  7. 字符编码在python中的处理_Python 字符编码处理总结

    Python中经常遇到这样那样的字符编码问题,尤其在处理网页源码时(特别是爬虫中): UnicodeDecodeError: 'XXX' codec can't decode bytes in pos ...

  8. 【爬虫】获取网页编码、chardet库、Python的字符编码

    目录 1.常用网页编码有 2.怎么知道一个网页的编码? 我们知道可以从审查元素(F12)通过查看元素获得. 那么有没有一种方法可以通过代码获取到编码呢? 3.chardet库 1.安装 2.chard ...

  9. 微型计算机普遍使用的编码是,微型计算机中普遍使用的字符编码是什么吗

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 微型计算机中,普遍使用的字符编码是ASCII码.ASCII(American Standard Code for Informat ...

最新文章

  1. 怎样高效阅读一篇文献?
  2. linux shell 2 /dev/null的解释
  3. 有关 alter tablespace begin backup
  4. Java做一个动画效果音量调节_设计与实现一个 ISoundable 接口,该接口具有发声功能、还能调节音量大小...
  5. 2.图像作为函数 | 标量、函数、混合图像_6
  6. Django 模板中 变量 过滤器 标签 的使用方法
  7. 整理的几个常用的数据库维护的脚本
  8. MySQL之存储过程和函数
  9. android自定义对话框_Android自定义提醒对话框
  10. 项目服务接口设计_Spring Boot Security 整合 OAuth2 设计安全API接口服务
  11. 面向对象编程 --- 反射
  12. 羞,Spring Bean 初始化/销毁竟然有这么多姿势
  13. 2021华为软件精英挑战赛(粤港澳赛区复赛第八)
  14. Linux好用的音乐播放器
  15. 计算机专业科研经费排名2015,2017中国大学科研经费排名
  16. 面向切面编程--加缓存
  17. 广义表的概念及其存储结构
  18. PADS的四层板转换成2层板
  19. 用Rdkit把化学结构式的Smiles转换为InchI
  20. 也许是史上最全的一次CDN详解

热门文章

  1. Exceptionless - .Net Core开源日志框架
  2. aelf帮助C#工程师10分钟零门槛搭建DAPP私有链开发环境
  3. 自动将 NuGet 包的引用方式从 packages.config 升级为 PackageReference
  4. Asp.NetCore轻松学-部署到 IIS 进行托管
  5. 领域驱动设计,让程序员心中有码(二)
  6. .NET Core 2.0及.NET Standard 2.0
  7. ASP.NET Core 中文文档 第三章 原理(3)静态文件处理
  8. powershell 启动线程与关闭线程
  9. windows下, nginx 提示错误 No input file specified
  10. 【C#程序设计】教学讲义——第三章:C#语言基础