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使用该编码 ...
随机推荐
- Linux修改日期、时间,系统与硬件时间
Linux的时间分为两种,硬件时间和系统时间两种: 一.查看与修改系统时间 查看系统时间:date # date Fri Nov 26 15:20:18 CST 1999 用指定的格式显示系统时间: ...
- 51单片机小项目电路TwoLed电路图
1.复位电路没有开关,不可控 在电容旁边并联一个开关和10k的电阻支路 2.晶振电路引用的外部晶振, 理论上XTAL2悬空,XTAL1接外部震荡信号 //ProjeceName:TwoLed //wr ...
- vim语法
在任何目录输入命令“vim <文件名>”就可以使用vim编辑文件了. 打开vim后,默认的是命令模式,输入i进入编辑模式,这个时候你可以编辑文件了.在编辑模式下按Esc键回到命令模式,在命 ...
- Java学习笔记42(数据库连接池 druid连接池)
druid连接池: 是阿里的连接池,druid的稳定性及效率都很高,目前用的比较广,所以建议开发过程中尽量用druid连接池(支持国产最重要) druid连接池也需要配置文件,配置文件必须是prope ...
- 自动化测试-4.selenium的xpath定位
前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...
- linux rpm方式安装mysql
01.搜索 mysql linux 网盘地址 http://pan.baidu.com/s/1qYOC6cs 02.把下载好的mysql 使用 xftp传到 linux中 software 文件 ...
- 激活WIN10系统
打开cmd slmgr /ipk VK7JG-NPHTM-C97JM-9MPGT-3V66T slmgr /skms kms.xspace.in slmgr /ato
- lvs负载均衡(DR模式)
lvs负载均衡(DR模式) 系统环境:lvs+keepalivedcentos7.5 ip:192.168.1.157 vip:192.168.1.150(主)centos7.5 ip:192.168 ...
- cocos2dx开发之util类&方法——取当前系统时间
返回time_t,即从1970年1月1日至今的秒数 time_t getSysTime(){ time_t currentTime = time(NULL); return currentTime; ...
- 百战程序员-xml
1.用自己的语言说出,为什么需要XML? XML 是一种元标注语言,该语言提供一种描述结构数据的格式.这有助于更精确地声明内容,方便跨越多种平台的更有意义的搜索结果.此外,XML 将起用新一代的基于 ...