python编码问题

    最早的字符串编码是ASCII编码,它仅仅对10个数字、26个大小写英文字母以及一些特殊字符进行了编码,ASCII最多表示256个字符,每个字符只需要占用1个字节。
    随着信息技术的发展,各国的文字都需要进行编码,于是相继出现了GBK、GB2312、UTF-8编码等,其中GBK和GB2312是我国制定的中文编码标准,规定英文字符占一个字节,中文字符占2个字节;而UTF-8是国际通用的编码格式,它包含了全世界所有国家需要用到的字符,其规定英文字符占1个字节,中文字符占3个字节。
Python 3.x默认采用UTF-8编码格式,有效地解决了中文编码问题。
在Python中,有2种常用的字符串类型,分别是strbytes类型,其中str用来表示Unicode字符,bytes用来表示二进制数据。str类型和bytes类型之间就需要使用encode()和decode()方法进行转换。

Python encode()方法

encode()方法为字符串类型(str)提供的方法,用于将str类型转化为bytes类型,这个过程也称为编码。

str.encode(encoding="编码")

>>> str1 = "C语言中文网"
>>> str1.encode()
b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91'
>>> str1 = "C语言中文网"
>>> str1.encode('GBK')
b'C\xd3\xef\xd1\xd4\xd6\xd0\xce\xc4\xcd\xf8'

Python decode()方法

和 encode() 方法正好相反,decode() 方法用于将 bytes 类型的二进制数据转换为 str 类型,这个过程也称为“解码”。

bytes.decode(encoding="编码")

>>> str = "C语言中文网"
>>> bytes=str.encode()
>>> bytes.decode()
'C语言中文网'

**注意,如果编码时采用的不是默认的 UTF-8 编码,则解码时要选择和编码时一样的格式,否则会抛出异常,例如:** 

>>> str = "C语言中文网"
>>> bytes = str.encode("GBK")
>>> bytes.decode()  #默认使用 UTF-8 编码,会抛出以下异常
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    bytes.decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 1: invalid continuation byte

>>> bytes.decode("GBK")
'C语言中文网'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值