python2和python3的编码encode解码decode函数
python比较坑的一个点;意义完全变了的两个函数
首先 常用的编码方式有3种,utf-8: 常用的传输和存储格式,Unicode的一种简化
Unicode:包括了所有可能字符的国际统一编码
GBK:中文的一种编码标准,包括中文和英文
在python2中 解码函数decode是 其他编码(utf-8或GBK或其他)——>Unicode编码 用法:u=str.decode('utf-8') 括号里是原编码格式
encode是 Unicode编码——>其他编码(utf-8或GBK或其他) 用法:g=u.encode('gbk') u是Unicode编码格式,括号里是目标编码格式
在python3中:python3中不用再考虑Unicode也不用考虑字符串的原编码类型, 文件读入str后都是Unicode编码,文件处理后, 想写到文件用什么编码方式,在函数中用变量定义就好。
字符串有两种数据类型,一种是字符串str,另一种是字节数据bytes
编码函数还是encode,但意义完全不同了,编码函数是 字符串str——>目标编码格式的字节类型bytes
s = "中文"
t=s.encode(encoding='utf-8')
p=s.encode(encoding='gbk')
print(t)
print(p)
输出:
b'\xe4\xb8\xad\xe6\x96\x87'
b'\xd6\xd0\xce\xc4'
解码函数还是decode,但意义完全不同了,解码函数是 字节类型bytes——>字节编码类型的字符串str
s = "中文" p=s.encode(encoding='gbk') sp=p.decode(encoding='gbk') print(p) print(sp)
b'\xd6\xd0\xce\xc4'
中文
这里要注意以什么格式编码就要以什么格式解码,要不然会报错
s = "中文" p=s.encode(encoding='gbk') sp=p.decode(encoding='utf-8') print(p) print(sp)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte
举个大栗子
s = "中文" g=s.encode(encoding='gbk') #从utf-8转成gbk字节码
gg=g.decode(encoding='gbk') #从gbk字节码转成gbk字符串
u=gg.encode(encoding='utf-8')#从gbk转成utf-8
uu=u.decode(encoding='utf-8')
k=uu.encode(encoding='gbk') #从utf-8转成gbk
kk=k.decode(encoding='gbk')
print(g)
print(gg)
print(u)
print(uu)
print(k)
print(kk)
输出:
b'\xd6\xd0\xce\xc4'
中文
b'\xe4\xb8\xad\xe6\x96\x87'
中文
b'\xd6\xd0\xce\xc4'
中文
注意:在python3中,str全部都是Unicode编码,所以看str变量的编码没有什么意义,而如果encode了,自然要encode里的变量参数来按编码类型编码
python2和python3的编码encode解码decode函数的更多相关文章
- day008 字符编码之 字符编码 、Python2和Python3字符编码的区别
计算机基础(掌握) 启动应用程序的流程 双击qq 操作系统接受指令然后把该操作转化为0和1发送给CPU CPU接受指令然后把指令发送给内存 内存接受指令把指令发送给硬盘获取数据 qq在内存中运行 文本 ...
- python3中编码与解码的问题
python3中编码与解码的问题 ASCII .Unicode.UTF-8 ASCII 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此 ...
- 字符编码 + python2和python3的编码区别(day08整理)
目录 昨日回顾 二十三.元组内置方法 二十四.散列表 二十五.字典内置方法 二十六.集合内置方法 二十七.深浅拷贝 拷贝 浅拷贝 深拷贝 今日内容 二十八.字符编码 1.文本编辑器存储信息的过程 2. ...
- 关于base64编码Encode和Decode编码的几种方式
关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...
- python encode和decode函数说明【转载】
python encode和decode函数说明 字符串编码常用类型:utf-8,gb2312,cp936,gbk等. python中,我们使用decode()和encode()来进行解码和编码 在p ...
- Python2 与 Python3 的编码对比
在 Python 中,不论是 Python2 还是 Python3 中,总体上说,字符都只有两大类: 通用的 Unicode 字符: (unicode 被编码后的)某种编码类型的字符,比如 UTF-8 ...
- 最简单的服务器和客户机(python3的编码与解码问题)
在学习python的过程中,我越来越感觉到python2和python3之间有很多不同点,最近发现的一点就是编码问题. 在代码清单14-1和14-2中,因为作者是用python2来写得,然后我是用py ...
- 关于Python字符编码encode和decode
(注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 记得几天前,部门的一个小姑娘问我,怎么她Python打印出来的中文信息都乱码了?我走过去,略思一二,瞬间给她搞定,其实这是字 ...
- Python2与Python3字符编码的区别
目录 字符编码应用之Python(掌握) 执行Python程序的三个阶段 Python2与Python3字符串类型的区别(了解) Python2 str类型 Unicode类型 Python3 字符编 ...
随机推荐
- 循序渐进实现仿QQ界面(三):界面调色与控件自绘
本篇讲述如何进行界面调色.界面调色一般有两种方法,调色板和HSL色彩变换.调色板局限于256色,这里不采用,因此用HSL色彩变换实现.首先要了解一下什么是HSL色彩空间,完整且详尽的知识请到维基百科去 ...
- Delphi 清理程序内存
procedure ClearMemory;begin if Win32Platform = VER_PLATFORM_WIN32_NT then begin ...
- Linux 系统下文件夹与文件的读写可执行权限问题
linux是一个多用户操作系统,linux对文件系统内的所有文件,实行了严格的权限划分管理.防止没有权限的用户访问某个文件.linux文件或目录的权限分为 读.写.可执行三种权限.文件访问的用户类别分 ...
- UE4使用Dll
Part1. 创建和编译Dll VS中创建Visual C++ > Win32 Console Application 工程模板,选择Dll,并勾上”Empty Project”. 在Solut ...
- PHP垃圾回收深入理解
转摘于http://www.cnblogs.com/lovehappying/p/3679356.html PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源的分配与释放(使用C编写P ...
- ES命令
基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Elasticsearch是一个接近实时的搜索平台.这意味 ...
- elasticsearch-7.2.0 在windows环境的部署应用
1.下载解压版"elasticsearch-7.2.0-windows-x86_64.zip",解压至"D:\server\elasticsearch-7.2.0&quo ...
- STM32 在串口通信时运用MODBUS协议
最近一个项目用到了MODBUS协议,就学习了一下,这里做一下记录以免后续忘记. 要用到MODBUS肯定要先知道是MOBUS协议,这里呢我们就又要先理解协议的含义了. 所谓的协议是什么?就是互相之间的约 ...
- Linux运维工程师需掌握的技能
笔者是运维工程师,对Linux方面有点心得,现在说一下需要掌握哪方面的工具吧.说到工具,在行外可以说是技能,在行内我们一般称之为工具,就是运维必须要掌握的工具.我就大概列出这几方面,这样入门就基本没有 ...
- php-fpm的执行方式 (进程管理模式)
php-fpm的进程数可以根据设置分为动态和静态. 静态:直接开启指定数量的php-fpm进程,不再增加或者减少: 动态:开始的时候开启一定数量的php-fpm进程,当请求量变大的时候,动态的增加ph ...