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使用该编码 ...
随机推荐
- ios 审核未通过 相机相册权限问题
苹果提交审核被打回来 附加的说明如下: We noticed that your app requests the user’s consent to access their camera but ...
- wpf 控件简单介绍
- 让MySQL数据库跑的更快的7个优化建议!
随着容量和负载的增加,MySQL 的性能会日趋缓慢.这里有七点建议能够保证 MySQL 的平稳运行. 性能是我们衡量应用的一种方式,而应用性能的一项指标就是用户体验,也就是平时我们常说的:“用户需要等 ...
- 复习-java-001
一.基本数据类型: byte.boolean.char.string.int.short.long.float.double 二.java三大特性: 1.封装 封装是实现面向对象程序设计的第一步,封装 ...
- Redis之在Linux上安装和简单的使用
我只是一个搬运工 Redis之在Linux上安装和简单的使用https://blog.csdn.net/qq_20989105/article/details/76390367 一.安装gcc 1.R ...
- ImageLorderUtil
import android.content.Context;import android.graphics.Bitmap;import android.os.Environment; import ...
- BAT批处理文件,脚本时间值%time:~0,2%%time:~3,2%%time:~6,2%的用法。
最近公司的项目,需要部署一个oracle定时备份脚本,删除掉特定时间前的备份文件.BAT批处理文件结合windows系统(任务计划程序) 正常情况下我们的任务计划会有反馈数值,通过它可以判断这个任务计 ...
- 《DSP using MATLAB》Problem 7.5
- debian系统下apache2开启ssi功能
SSI (Server Side Include)的 html 文件扩展名 (.shtml), 通常称为"服务器端嵌入"或者叫"服务器端包含"说白了就是类似其他 ...
- pac4j探索(一)之buji-pac4j shiro整合Cas实现单点登录
https://blog.csdn.net/hxm_code/article/details/79181218 https://blog.csdn.net/hxm_code/article/detai ...