Python字符编码补充
字符编码:
Python字符编码贯穿Python学习的始终,现在应用的是Python2中字符编码的问题是很多的。
这次是要彻底解决Python字符编码的问题!!!
1 字符编码的发展过程:
1 、ASCII :256 美国需要128个字符,只需要7位 --美国
2、扩展ASCII : 8 比特位 --拉丁
3、GB2312 :
中文扩展ASCII 两个字节都大于127 --中国
4、GBK :
两个字节,第一个字节大于127
5、Unicode是一种编码方式 两个字节 16
至少两个字节:2^16 = 65536
在Unicode基础上产生utf-8,可变长字符编码
英文 1个字节,非英文2-6
2 数据的存储形式
内存中的统一是Unicode编码,数据的存储是utf-8(硬盘和网络传输)

存储数据使用utf-8占用空间少
传输数据快
Unicode(明文对应二进制)这个二进制是16进制格式的
utf-8(二进制对应二进制)
3 程序执行前:
普通软件的执行是通过调用操作系统,让CPU从内存中获取数据,然后执行。
文本编辑器的例子:(这是文件的编码)
**存储:**
明文---Unicode(内存中)------存储到本地--编码成utf-8的格式存放在硬盘上
**读取:**
utf-8解码成Unicode,Unicode解码成中文
4 程序执行中:
Python解释器的有调用、执行的功能,首先加载到内存职工需要解码,用什么编码就用什么解码。
程序执行中主要是针对的是字符串,Python解释器是逐行执行,文件中的字符串有相应的编码格式,这是最重要的内容。
Python2:
开头的声明,是解码的声明#coding:utf-8 按照utf-8来解码
Python2默认是ASCII码进行解码
1 str (数据类型的名字): bytes 数据
定义一个字符串就是字节数据
2 unicode (数据类型的名字): unicode将二进制数据编码成另一种二进制数据 (如utf=8)
**Unicode数据前面有u前缀 **
文件的执行编码
s ="中文"
print repr(s) #repr函数是将数据显示成字符串的方式
结果:
**'\xe4\xb8\xad\xe6\x96\x87' ** 现在是字节数据
s =u"中文" # 在字符串的前面加上u 代表Unicode数据类型
print repr(s)
结果是:
u'\u4e2d\u6587' Unicode数据类型
字节数据的解码
#coding:utf-8
#Python2.7
s1 = '中文'
s2 = u'中文'
# print repr(s)
print type(s1)
print type(s1.decode("utf-8")) # 将字节数据(数据类型是str)通过utf-8解码-->unicode数据类型
结果:
type 'str'
type 'unicode'
数据的编码
#coding:utf-8
#Python2.7
s1 = '中文'
s2 = u'中文'
# print repr(s)
# print type(s1)
# print type(s1.decode("utf-8")) # 将字节数据(数据类型是str)通过utf-8解码-->unicode数据类型
print type(s2)
print type(s2.encode("utf-8")) # 将Unicode数据(数据类型是Unicode)通过utf-8编码-->str数据类型
print s2
结果是:
type 'unicode'
type 'str'
中文
Python2给解 释器的是字节数据
python3;
默认是Unicode数据 就是str
1 str(数据类型的名字): unicode 数据
2 bytes(数据类型名字): bytes 数据
将Unicode数据encode
将字节数据decode
完全把字节类型和字符类型分开了,不能混用
注意点:
1 、Unicode gbk utf-8 都是编码规则
2 、内存中是Unicode Unicode作为转换的中转站
关于终端的乱码问题:
在pycharm中执行的时候是通过pycharm的软件执行的,pycharm终端默认是utf-8,Windows的cmd是通过win系统编码格式执行的,win默认是gbk,解码的时候可以在字符的前面添加u,或者解码的方式改成coding:gbk
Python字符编码补充的更多相关文章
- python 字符编码练习
通过下面的练习,加深对python字符编码的认识 # \x00 - \xff 256个字符 >>> a = range(256)>>> b = bytes(a) # ...
- Python字符编码讲解
声明:本文参考 Python字符编码详解 在计算机中我们不管用什么语言和程序,最终数据在计算机中的都是字节码(也就是01形式)的形式存在的,如果 计算机直接把字节码显示在屏幕上,很明显一般人看不懂字节 ...
- 深入理解Python字符编码--转
http://blog.51cto.com/9478652/2057896 不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError ...
- 深入理解Python字符编码
不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...
- Python字符编码详解,str,bytes
什么是明文 “明文”是可以是文本,音乐,可以编码成mp3文件.明文可以是图像的,可以编码为gif.png或jpg文件.明文是电影的,可以编码成wmv文件.不一而足. 什么是编码?把明文变成计算机语言 ...
- python --- 字符编码学习小结(二)
距离上一篇的python --- 字符编码学习小结(一)已经过去2年了,2年的时间里,确实也遇到了各种各样的字符编码问题,也能解决,但是每次都是把所有的方法都试一遍,然后终于正常.这种方法显然是不科学 ...
- 转1:Python字符编码详解
Python27字符编码详解 声明 一 字符编码基础 1 抽象字符清单ACR 2 已编码字符集CCS 3 字符编码格式CEF 31 ASCII初创 311 ASCII 312 EASCII 32 MB ...
- 转2:Python字符编码详解
1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...
- python字符编码(二)
一.什么是字符编码 计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电压(高低压即二进制数1,低电压即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而 ...
随机推荐
- C#backgroundWorker用法
1.在 WinForms 中,有时要执行耗时的操作,在该操作未完成之前操作用户界面,会导致用户界面停止响应.解决的方法就是新开一个线程,把耗时的操作放到线程中执行,这样就可以在用户界面上进行其它操作. ...
- P3803 【模板】多项式乘法(NTT)
传送门 NTT好像是比FFT快了不少 然而感觉不是很看得懂……主要是点值转化为系数表示那里…… upd:大概已经搞明白是个什么玩意儿了……吧…… //minamoto #include<bits ...
- Node.js 内置模块Stream(流)
"流"是一种抽象的数据结构 通过使用"流"可以将一段数据分割成几段,并按顺序传输,使用"流"可以降低对系统性能的要求,减少对CPU的消耗 S ...
- ES6高级使用技巧(reduce,filter篇)
本周总结 这几天在写Echarts自定义需求的时候发现了,图形化算法和函数式编程的应用场景,很多时候我们现在学的东西并一定在当前的这种状态有用,但是兴趣吧,喜欢就去学呗,没准在日后的工作日常中用到了 ...
- Eclipse开发MR环境搭建
1.jdk环境配置 jdk安装后好后配置相关JAVA_HOME环境变量,并将bin目录配置到path 2. 下载hadoop-2.7.1.tar.gz 解压hadoop-2.7.1.tar.g ...
- 【源码系列】Eureka源码分析
对于服务注册中心.服务提供者.服务消费者这个三个主要元素来说,服务提供者和服务消费者(即Eureka客户端)在整个运行机制中是大部分通信行为的主动发起者(服务注册.续约.下线等),而注册中心主要是处理 ...
- CentOS(6、7)修改主机名(hostname)
centos6需要修改两处:一处是/etc/sysconfig/network,另一处是/etc/hosts,只修改任一处会导致系统启动异常.首先切换到root用户. /etc/sysconfig/n ...
- Mysql 开启 Slow 慢查询
1:登录数据库查看是否已经开启了Slow慢查询: mysql> show variables like 'slow_query%'; 2:开启Mysql slow日志: 默认情况下slow_qu ...
- SpringBoot | 集成Java Mail
Spring Boot 对Java mail 集成提供了自动配置的支持,只需要配置依赖以及在application.properties 里配置邮件信息即可. 添加依赖: <dependency ...
- 牛客寒假6-B.煤气灶
链接:https://ac.nowcoder.com/acm/contest/332/B 题意: 小j开始打工,准备赚钱买煤气灶. 第一天,小j的工资为n元,之后每天他的工资都比前一天多d元. 已知煤 ...