pytho学习笔记---编码
编解码
ASCII:1字节,0-255
GBK2313:常用的汉字,2万多个
GBK:对GBK2313的补充,支持藏文,2个字节表示一个汉字
big5:台湾,繁体字
unicode:万国码,2-4字节,只是在内存中使用,传输或者保存时要编码
UTF:Unicode transformation format
UTF-8:变长,1-4个字节,兼容ASCII,汉字2字节,好处是省空间,但是浪费时间
UTF-16:2字节
UTF-32:4字节
总而言之:
Unicode定义世界每个字符的索引值。
UTF8/UTF16实现Unicode的标准,把字符存储到存储介质中。
py3:
>>> s='a'
>>> type(s)
<class 'str'>
>>> s1=b'a'#py3中前面加b是变成bytes类型
>>> type(s1)
<class 'bytes'>
>>> s == s1
False
>>> s.encode()
b'a'
>>> s.encode() ==s1#编码之后s与s1相等
True
>>> type(s.encode())
<class 'bytes'>
>>> s.decode()#'str'对象没有'decode'属性,不能解码,报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'decode'
>>>
>>> import sys#导入sys
>>> dir(sys)#dir查看用法
>>> sys.getdefaultencoding()#获取当前编码格式
'utf-8'#py中默认编码格式为utf-8
>>>
s = 'a'--->str类型(type)---->unicode编码
s1 =b'a'--->bytes类型(type)---->字节编码(ascii,utf-8,gbk...)
>>> s="光荣之路测试开发培训"
>>> type(s)
<class 'str'>
>>> s.encode()#不指定编码格式编码
b'\xe5\x85\x89\xe8\x8d\xa3\xe4\xb9\x8b\xe8\xb7\xaf\xe6\xb5\x8b\xe8\xaf\x95\xe5\x
bc\x80\xe5\x8f\x91\xe5\x9f\xb9\xe8\xae\xad'
>>> s.encode("utf-8")#指定utf-8模式,与不指定编码格式得出的结果一致
b'\xe5\x85\x89\xe8\x8d\xa3\xe4\xb9\x8b\xe8\xb7\xaf\xe6\xb5\x8b\xe8\xaf\x95\xe5\x
bc\x80\xe5\x8f\x91\xe5\x9f\xb9\xe8\xae\xad'
>>> s.encode("gbk")#指定gbk编码格式
b'\xb9\xe2\xc8\xd9\xd6\xae\xc2\xb7\xb2\xe2\xca\xd4\xbf\xaa\xb7\xa2\xc5\xe0\xd1\x
b5'
>>> len(s.encode("gbk"))#len内置函数查看长度
20
>>> len(s.encode("utf-8"))
30
>>>
>>> s=b"光荣之路测试开发培训"#字节只能包含ASCII文字字符,这样写会报错
File "<stdin>", line 1
SyntaxError: bytes can only contain ASCII literal characters.
>>> s="光荣之路测试开发培训"
>>> s="光荣之路测试开发培训".encode()#字符串后面直接加.encode来编码跟s.decode()一样
>>> s
b'\xe5\x85\x89\xe8\x8d\xa3\xe4\xb9\x8b\xe8\xb7\xaf\xe6\xb5\x8b\xe8\xaf\x95\xe5\x
bc\x80\xe5\x8f\x91\xe5\x9f\xb9\xe8\xae\xad'
>>> type(s)
<class 'bytes'>
>>> s.decode()#decode解码
'光荣之路测试开发培训'
>>> type(s.decode())
<class 'str'>
>>>
>>> s="光荣之路测试开发培训".encode("gbk")#用gbk编码
>>> s
b'\xb9\xe2\xc8\xd9\xd6\xae\xc2\xb7\xb2\xe2\xca\xd4\xbf\xaa\xb7\xa2\xc5\xe0\xd1\x
b5'
>>> s.decode("utf-8")#用utf-8解码
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 0: invalid#报错:'utf-8'编解码器不能解码字节0xb9在位置0:无效
start byte
>>>
>>> s.decode("gbk")#用gbk解码
'光荣之路测试开发培训'
>>>
>>> type(s)
<type 'str'>
>>> s =u'a'#py2中前面加u就是unicode编码格式
>>> type(s)
<type 'unicode'>
>>> s ="光荣之路测试开发培训"
>>> s
'\xb9\xe2\xc8\xd9\xd6\xae\xc2\xb7\xb2\xe2\xca\xd4\xbf\xaa\xb7\xa2\xc5\xe0\xd1\xb5'
<type 'str'>
>>>
>>> s
u'\u5149\u8363\u4e4b\u8def\u6d4b\u8bd5\u5f00\u53d1\u57f9\u8bad'
>>> s =u"光荣之路测试开发培训".encode("gbk")
>>> s
'\xb9\xe2\xc8\xd9\xd6\xae\xc2\xb7\xb2\xe2\xca\xd4\xbf\xaa\xb7\xa2\xc5\xe0\xd1\xb5'
>>> s =u"光荣之路测试开发培训".encode("utf-8")
>>> s
'\xe5\x85\x89\xe8\x8d\xa3\xe4\xb9\x8b\xe8\xb7\xaf\xe6\xb5\x8b\xe8\xaf\x95\xe5\xbc\x80\xe5\x8f\x91\xe5\x9f\xb9\xe8\xae\xad'
>>>
>>> sys.getdefaultencoding()#py2中默认使用ascii编码格式
'ascii'
>>>
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
>>>
定义unicode类型的字符串,分别转换成utf-8和GBK
定义UTF-8类型的字符串,转换为GBK
>>> s.encode("utf-8")
'\xe5\xa4\xa9\xe5\xa4\xa9\xe5\x90\x91\xe4\xb8\x8a'
>>> s.encode("gbk")
'\xcc\xec\xcc\xec\xcf\xf2\xc9\xcf'
>>>
>>> s.encode("utf-8")
b'\xe5\xa4\xa9\xe5\xa4\xa9\xe5\x90\x91\xe4\xb8\x8a'
>>> s.encode("gbk")
b'\xcc\xec\xcc\xec\xcf\xf2\xc9\xcf'
>>>
1.if 表达式1:
表达式1为真执行
elif 表达式2:
表达式2为真执行
else:
以上所有的表达式都不为真
......
2.命令行里显示缩进模式
>>> while 1:
... date =input("输入一个字母:")
... if date == 'a':
... continue
... elif date == 'e':
... break
... elif date == 'r':
... word = input("请输入一个字母:")
... else:
... print("输入错误!")
... continue
...
输入一个字母:w
输入错误!
输入一个字母:e
>>>
练习:
输出100以内不能被5整除的数
思路:
1.生成1-100以内的列表
2.判断能否被5整除
3.
for实现
>>> for i in range(1,101):
... if i%5 ==0:
... continue
... else:
... print(i,end=' ')
...
1 2 3 4 6 7 8 9 11 12 13 14 16 17 18 19 21 22 23 24 26 27 28 29 31 32 33 34 36 37 38 39 41 42 43 44 46 47 48 49 51 52 53 54 56 57 58 59 61 62 63 64 66 67 68 69 71 72 73 74 76 77 78 79 81 82 83 84 86 87 88 89 91 92 93 94 96 97 98 99 >>>
>>>
while实现
>>> num = 1
>>> while num<=100:
... if num%5 !=0:
... print(num)
... num+=1
...
>>>
pytho学习笔记---编码的更多相关文章
- java web 学习笔记 编码问题总结
java web 学习笔记 编码问题总结 1.非form表单中提交的中文参数---------------------------传递给Servlet服务器时,默认以iso-8859-1解码 ...
- 重温Servlet学习笔记--编码问题
在说编码问题之前,首先先了解一下常见的字符编码: ISO-8859-1: 拉丁编码,不支持中文 gbk,gb2312,gb18030:系统默认编码,是中国的国标码 utf-8: 支持几乎所有语言的编 ...
- python 学习笔记-----编码问题
1.python 最早支持的是ASCII编码. 所以对于普通的字符串"ABC"为ASCII编码的形式.字母和数字之间的转换函数为ord('字母')和chr(‘数字’)函数. ord ...
- [原创]java WEB学习笔记45:自定义HttpFilter类,理解多个Filter 代码的执行顺序,Filterdemo:禁用浏览器缓存的Filter,字符编码的Filter,检查用户是否登陆过的Filter
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 【视频编解码·学习笔记】8. 熵编码算法:基本算法列举 & 指数哥伦布编码
一.H.264中的熵编码基本方法: 熵编码具有消除数据之间统计冗余的功能,在编码端作为最后一道工序,将语法元素写入输出码流 熵解码作为解码过程的第一步,将码流解析出语法元素供后续步骤重建图像使用 在H ...
- UFLDL深度学习笔记 (一)反向传播与稀疏自编码
UFLDL深度学习笔记 (一)基本知识与稀疏自编码 前言 近来正在系统研究一下深度学习,作为新入门者,为了更好地理解.交流,准备把学习过程总结记录下来.最开始的规划是先学习理论推导:然后学习一两种开源 ...
- UFLDL深度学习笔记 (七)拓扑稀疏编码与矩阵化
UFLDL深度学习笔记 (七)拓扑稀疏编码与矩阵化 主要思路 前面几篇所讲的都是围绕神经网络展开的,一个标志就是激活函数非线性:在前人的研究中,也存在线性激活函数的稀疏编码,该方法试图直接学习数据的特 ...
- UFLDL深度学习笔记 (五)自编码线性解码器
UFLDL深度学习笔记 (五)自编码线性解码器 1. 基本问题 在第一篇 UFLDL深度学习笔记 (一)基本知识与稀疏自编码中讨论了激活函数为\(sigmoid\)函数的系数自编码网络,本文要讨论&q ...
- MySQL学习笔记5——编码
MySQL学习笔记5之编码 编码 1.查看MySQL数据库编码 *SHOW VARIABLES LIK 'char%'; 2.编码解释 *character_set_client:MySQL使用该编码 ...
随机推荐
- 扫描工具——Nmap用法详解
Nmap使用 Nmap是主机扫描工具,他的图形化界面是Zenmap,分布式框架为Dnamp. Nmap可以完成以下任务: 主机探测 端口扫描 版本检测 系统检测 支持探测脚本的编写 Nmap在实际中应 ...
- 2019-04-15-day032-多进程介绍
内容回顾 基于原生socket的udp协议实现将client端发送过来的消息放到字典中 字典的key是所有客户端的地址,value是一个列表 io :输入输出, 输入到内存,向内存输入 从内存中向外( ...
- C语言gcc处理过程
gcc编译C文件一共四步,预处理(Preprocess),编译(Compilation),汇编(Assembly)和链接(Linking) 1. 预处理(Preprocess) 预处理是预处理中会展开 ...
- OperateResult 基础类及派生类介绍
前言 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台输入下面的指令安装: Install-Package HslCommunication NuGet安 ...
- java 环形链表实现约瑟夫(Joseph)问题
约瑟夫问题又名丢手绢问题.相传著名犹太历史学家 Josephus 利用其规则躲过了一场自杀游戏,而后投降了罗马. 问题: 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.* 从编号为 ...
- Centos系统下 Gitolite安装与相关配置(git权限控制软件)
确保已经安装了最新版的git服务Git源码安装 Linux指定安装目录,并且创建了 用户名为git 的账户 修改.gitolite.rc #设置gitolite管理的仓库目录 GL_REPO_BAS ...
- s21day07 python笔记
s21day07 python笔记 一.昨日内容回顾及补充 回顾 补充 将前面所提到的功能,统一改称为方法 二.深浅拷贝 基本格式 v1 = [1,2,3] import copy v2 = copy ...
- Linux下查看CPU型号,内存大小,硬盘空间的命令(详解)
1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2 **uniq命令:删除重 ...
- CXF develop Webserice Tuturial
1. 修改pom.xml 在Maven中引入CXF 依赖包 1.1 引入CXF依赖包 ,配置Tomcat插件及其它 <project xmlns="http://maven.apach ...
- arm-linux-ld:u-boot.lds:1: ignoring invalid character `#' in expression
在裁剪uboot的时候出现下面错误: LDS u-boot.lds LD u-boot arm-linux-: ignoring invalid character `#' in expression ...