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使用该编码 ...
随机推荐
- 编译darknet出现libpng16.so.16:对‘inflateValidate@ZLIB_1.2.9’未定义的引用
cd /usr/lib/x86_64-linux-gnu sudo ln -s ~/anaconda/lib/libpng16.so.16 libpng16.so.16 sudo ldconfig## ...
- python day19--面向对象,接口,封装
#1.接口类,对象类.规范类中方法的统一. # 第一版:三个类,每个类中有相同的方法 # class Alipay: # def __init__(self,money): # self.money= ...
- 算法复杂度中的O(logN)底数是多少
前言 无论是计算机算法概论.还是数据结构书中,关于算法的时间复杂度很多都用包含O(logN)这样的描述,但是却没有明确说logN的底数究竟是多少.算法中log级别的时间复杂度都是由于使用了分治思想,这 ...
- Python全栈之路---数据类型—字符串
字符串:有序的字符的集合,用于存储和表示基本的文本信息,一对单.双.或三引号中间包含的内容称之为字符串 1.特性:有序,不可变(开辟新地址存储字符串,python解释器会定期清空不用了的已存储的) & ...
- 20155208徐子涵 Exp5 MSF基础应用
20155208徐子涵 Exp5 MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode. Exploit:Exploit 的英文意思就是利用,它在黑客眼里就是 ...
- vi常用命令及快捷键
vi常用快捷键 1)移动光标 h :光标左移一个字符j :光标上移一个字符k :光标下移一个字符l :光标右移一个字符 0 :光标移至行首$ :光标移至行尾 H :光标移至屏幕首行M :光标移至屏幕中 ...
- Linux 系统下使用dd命令备份还原MBR主引导记录
https://en.wikipedia.org/wiki/Master_boot_recordhttps://www.cyberciti.biz/faq/howto-copy-mbr/https:/ ...
- BZOJ 2277 Poi2011 Strongbox
题目大意:一个集合A,包含了0~n-1这n个数.另有一个集合B,满足: 1.B是A的子集. 2.如果a.b均在B中,则(a+b)%n也在B中(a=b亦可) 给出k个数ai,前k-1个不在B中,第k个在 ...
- 隔离级别简介 (mysql)
隔离级别:一个事务必须与由其他事务进行的资源或数据更改相隔离的程度.隔离级别从允许的并发副作用(例如,脏读或虚拟读取)的角度进行描述. 定义 编辑 事务指定一个隔离级别,该隔离级别定义一个事务必须与由 ...
- Linux 下安装FastDFS v5.08 的php扩展
php扩展也需要依赖于FastDFS一些库文件,所以请先安装FastDFS,具体请看我之前的文章. 一.安装目录 php安装目录 /data/nmp/php FastDFS源码目录 /data/w ...