当前位置: 首页 > news >正文

python编程笔记--字符编码

ASCII码、Unicode、utf-8

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用8位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示255个符号。

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由16位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

Unicode的特点:

  • 直接支持全球所有语言,每个国家都可以不用再使用自己之前的旧编码了,用unicode就可以了。(就跟英语是全球统一语言一样)
  • unicode包含了跟全球所有国家编码的映射关系
  • 使用unicode表示一个字符,太浪费空间

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:使用1、2、3、4个字节表示所有字符;优先使用1个字符、无法满足则使增加一个字节,最多4个字节。英文占1个字节、欧洲语系占2个、东亚占3个,其它及特殊字符占4个。总之,UTF是为unicode编码设计的一种在存储和传输时节省空间的编码方案。

各个字符编码:

  • ASCII 占1个字节,只支持英文
  • GB2312 占2个字节,支持6700+汉字
  • GBK GB2312的升级版,支持21000+汉字
  • Shift-JIS 日本字符
  • ks_c_5601-1987 韩国编码
  • TIS-620 泰国编码
  • Unicode 2-4字节已经收录136690个字符,并还在一直不断扩张中...

 

python3中字符编码

  •    py3有两种数据类型:str和bytes; str类型存unicode数据,bytse类型存bytes数据(注:无论以什么编码在内存里显示字符,存到硬盘上都是2进制
  •   py2默认ASCII码,py3默认的utf8
  •   在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

python3 执行代码的过程:

  1. 解释器找到代码文件,把代码字符串按文件头定义的编码加载到内存,转成unicode
  2. 把代码字符串按照语法规则进行解释,
  3. 所有的变量字符都会以unicode编码声明
          
 

常见编码错误的原因有:

  • Python解释器的默认编码
  • Python源文件文件编码
  • Terminal使用的编码
  • 操作系统的语言设置

 

转载于:https://www.cnblogs.com/jjliu2018/p/10059890.html

相关文章:

  • 增、删、改、查,数据库和表操作
  • Confluence 6 管理和恢复空间管理权限
  • iOS 系统授权开发
  • Kubernetes首爆严重安全漏洞,请升级你的Kubernetes
  • oracle asm amdu和dd使用
  • shell脚本编程之“最简单的死循环”【转】
  • 用户,组和权限零碎知识
  • Java 与 PHP 的MD5加密方法
  • 关闭webstorm(2017.3.5)的分号检测
  • vue 之 .sync 修饰符
  • 75、STP环路防护UDLD、Loop Guard简介
  • TensorFlow提示AVX2...
  • 【转】Android自动化测试(UiAutomator)简要介绍
  • 进程 守护
  • sharepoint2013用场管理员进行文档库的爬网提示没有权限,拒绝的解决方法
  • 〔开发系列〕一次关于小程序开发的深度总结
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Angular 2 DI - IoC DI - 1
  • Github访问慢解决办法
  • Javascript弹出层-初探
  • jQuery(一)
  • leetcode98. Validate Binary Search Tree
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Protobuf3语言指南
  • Redis中的lru算法实现
  • spring + angular 实现导出excel
  • spring-boot List转Page
  • sublime配置文件
  • Vim 折腾记
  • windows下如何用phpstorm同步测试服务器
  • 基于Android乐音识别(2)
  • 基于HAProxy的高性能缓存服务器nuster
  • 如何优雅地使用 Sublime Text
  • 入门级的git使用指北
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 手写一个CommonJS打包工具(一)
  • 我建了一个叫Hello World的项目
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • ionic异常记录
  • Java总结 - String - 这篇请使劲喷我
  • 选择阿里云数据库HBase版十大理由
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • # Maven错误Error executing Maven
  • #laravel 通过手动安装依赖PHPExcel#
  • #大学#套接字
  • (笔试题)分解质因式
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (利用IDEA+Maven)定制属于自己的jar包
  • (三)模仿学习-Action数据的模仿
  • (十)T检验-第一部分
  • (一)认识微服务
  • (转)scrum常见工具列表