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函数的更多相关文章

  1. day008 字符编码之 字符编码 、Python2和Python3字符编码的区别

    计算机基础(掌握) 启动应用程序的流程 双击qq 操作系统接受指令然后把该操作转化为0和1发送给CPU CPU接受指令然后把指令发送给内存 内存接受指令把指令发送给硬盘获取数据 qq在内存中运行 文本 ...

  2. python3中编码与解码的问题

    python3中编码与解码的问题 ASCII .Unicode.UTF-8 ASCII 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此 ...

  3. 字符编码 + python2和python3的编码区别(day08整理)

    目录 昨日回顾 二十三.元组内置方法 二十四.散列表 二十五.字典内置方法 二十六.集合内置方法 二十七.深浅拷贝 拷贝 浅拷贝 深拷贝 今日内容 二十八.字符编码 1.文本编辑器存储信息的过程 2. ...

  4. 关于base64编码Encode和Decode编码的几种方式

    关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...

  5. python encode和decode函数说明【转载】

    python encode和decode函数说明 字符串编码常用类型:utf-8,gb2312,cp936,gbk等. python中,我们使用decode()和encode()来进行解码和编码 在p ...

  6. Python2 与 Python3 的编码对比

    在 Python 中,不论是 Python2 还是 Python3 中,总体上说,字符都只有两大类: 通用的 Unicode 字符: (unicode 被编码后的)某种编码类型的字符,比如 UTF-8 ...

  7. 最简单的服务器和客户机(python3的编码与解码问题)

    在学习python的过程中,我越来越感觉到python2和python3之间有很多不同点,最近发现的一点就是编码问题. 在代码清单14-1和14-2中,因为作者是用python2来写得,然后我是用py ...

  8. 关于Python字符编码encode和decode

    (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 记得几天前,部门的一个小姑娘问我,怎么她Python打印出来的中文信息都乱码了?我走过去,略思一二,瞬间给她搞定,其实这是字 ...

  9. Python2与Python3字符编码的区别

    目录 字符编码应用之Python(掌握) 执行Python程序的三个阶段 Python2与Python3字符串类型的区别(了解) Python2 str类型 Unicode类型 Python3 字符编 ...

随机推荐

  1. CF1073G Yet Another LCP Problem 后缀自动机 + 虚树 + 树形DP

    题目描述 记 $lcp(i,j)$ 表示 $i$ 表示 $i$ 这个后缀和 $j$ 这个后缀的最长公共后缀长度给定一个字符串,每次询问的时候给出两个正整数集合 $A$ 和 $B$,求$\sum_{i\ ...

  2. 又联考了一场,感觉自己好菜啊,T2推出了公式但是不会逆元QAQ,难受啊!!!不过都确实是一道逆元的好题撒!

    简单的玄学(random) 题目描述: 样例输入: 样例1: 3 2 样例2: 1 3 样例3: 4 3 样例输出: 样例1: 1 8 样例2: 1 1 样例3: 23 128 提示: 时间限制:10 ...

  3. Cluster基础(三):配置HAProxy负载平衡集群、Keepalived高可用服务器、Keepalived+LVS服务器

    一.配置HAProxy负载平衡集群 目标: 准备三台Linux服务器,两台做Web服务器,一台安装HAProxy,实现如下功能: 客户端访问HAProxy,HAProxy分发请求到后端Real Ser ...

  4. NOIp 基础数论知识点总结

    推荐阅读 NOIp 数学知识点总结: https://www.cnblogs.com/greyqz/p/maths.html Basic 常用素数表:https://www.cnblogs.com/g ...

  5. [CSP-S模拟测试]:Reverse(模拟+暴力+剪枝)

    题目描述 小$G$有一个长度为$n$的$01$串$T$,其中只有$T_S=1$,其余位置都是$0$.现在小$G$可以进行若干次以下操作: $\bullet$选择一个长度为K的连续子串($K$是给定的常 ...

  6. webpack-使用html-webpack-plugin和ejs-loader将侧栏、头部、底部公共html做成模板,并生成合并后的html页面

    在学习前端自动化之前一直使用 PHP,JSP 将在每个页面将头部.侧栏.底部等部分引入,现在前端 "娱乐圈" 一直噼里啪啦的每天出新东西,自从接触了前端自动化我就觉得这种工作可以交 ...

  7. php+form表单的文件上传

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. [LeetCode] 461. Hamming Distance(位操作)

    传送门 Description The Hamming distance between two integers is the number of positions at which the co ...

  9. DataContract] [DataMember] 程序集引用

    引用,右键->添加引用->System.Runtime.Serialization 添加

  10. netcore之mysql中文乱码问题解决记录

    尝试了netcore代码里面设置基本无效了 https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core- ...