python的编码 encode

1 篇文章 0 订阅
1 篇文章 0 订阅

 

Python3 encode()方法


描述

encode() 方法以指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案。

语法

encode()方法语法:

str.encode(encoding='UTF-8',errors='strict')

参数

  • encoding -- 要使用的编码,如: UTF-8。
  • errors -- 设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。

返回值

该方法返回编码后的字符串,它是一个 bytes 对象。

实例

以下实例展示了encode()方法的实例:

实例(Python 3.0+)

#!/usr/bin/python3 str = "菜鸟教程"; str_utf8 = str.encode("UTF-8") str_gbk = str.encode("GBK") print(str) print("UTF-8 编码:", str_utf8) print("GBK 编码:", str_gbk) print("UTF-8 解码:", str_utf8.decode('UTF-8','strict')) print("GBK 解码:", str_gbk.decode('GBK','strict'))

以上实例输出结果如下:

菜鸟教程
UTF-8 编码: b'\xe8\x8f\x9c\xe9\xb8\x9f\xe6\x95\x99\xe7\xa8\x8b'
GBK 编码: b'\xb2\xcb\xc4\xf1\xbd\xcc\xb3\xcc'
UTF-8 解码: 菜鸟教程
GBK 解码: 菜鸟教程

python3中encode和decode跟python2还是有一定的区别的,在python3中: 

  encode(编码):按照某种规则将“文本”转换为“字节流”。  python 3中表示:unicode变成str

   decode(解码):将“字节流”按照某种规则转换成“文本”。   python3中表示:str变成unicode

字符串在Python内部的表示是Unicode编码,因此在做编码转换时,通常需要以Unicode作为中间编码,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(encode)成另一种编码。

  u代表Unicode类型,s代表str类型

  u.encode('...'):只要你填写了正确的编码,基本上总是能成功的。就像任何文件都可以压缩成zip文件。

 

  u.decode('...'):没有任何意义,因为decode是将str转为unicode编码,而u本身就是unicode编码的。

 

  s.encode('...'):在python 3中,将产生一个编码后的byte类型的字符串(这里有点像Python 2.x中的str),byte类型的字符串是支持解码操作的。

 

  s.decode('...'):运行都会出错。因为python 3中的str类型对象有点像Python 2中的unicode, 而decode是将str转为unicode编码,所以str仅有一个encode方法,调用这个方法后将产生一个编码后的byte类型的字符。

 

按照上述规则对一般的字符编码解码可以基本解决,同时如果还有一些困惑可以百科一下Unicode,gbk等常用编码格式,了解一下他们的区别和编码原理。

python3默认编码为unicode,由str类型进行表示。二进制数据使用byte类型表示 
字符串通过编码转换成字节码,字节码通过解码成为字符串 
encode:str –> bytes 
decode:bytes – > str 
直接上代码:

import sys
print("print1:",sys.getdefaultencoding())
name ="中国"
name = name.encode("utf-8")
print("print2:",type(name))
name = name.decode("utf-8")
name = name.encode("gbk")
print("print4:",type(name))
1
2
3
4
5
6
7
8
结果: 
 
分析:

python3默认的编码是unicode,utf-8可以看做是unicode的一个扩展集。
gbk在python中可直接转换成为utf-8,如print4所示,参考网址: 
https://www.cnblogs.com/2017Python/articles/6569750.html
字符串转换成字节(encode):


s1  = "中国"
//法1:
s1 = s1.encode('utf-8')

//方2:,缺省也是可以滴
s1 = s1.encode()

//方3:
s1 = s1.encode(encoding='utf-8')

//法4:我对此语句的理解是,现在用bytes(s1,encoding='utf-8')这个方法转换成字符节。原先是按照utf-8进行编码,
s1 =  bytes(s1, encoding='utf-8')

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
字节转换成字符串(decode):

s1 = "中国"
s1 = s1.encode("utf-8")

//法1:现在的s1是字节类型
str = s1.decode('utf-8')

//法2:其中1是二进制类型,我对此语句的理解是,现在用str(bytes,encoding='utf-8')这个方法转换成字符串。按照utf-8进行编码,
str1 = str(s1, encoding='utf-8')


 

 

 

 

 

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值