python3字符集之间--encode与decode之间的转码详解

 

encode是编码,里面传入的参数是需要转成的字符集,
decode是解码,里面传入的参数是本身的字符集,用本身的字符集解码为unicode字符集再转码

字符集之间的爱恨纠缠

 1 # -*- coding: utf-8 -*-
 2 '''
 3     Python3 默认编码为unicode
 4 '''
 5 #输出默认编码
 6 import sys
 7 print(sys.getdefaultencoding())
 8 
 9 #文件编码为utf-8
10 s = '你好'
11 #把s转换为gbk编码
12 s_to_gbk = s.encode("gbk")
13 print(s_to_gbk)
14 #输出结果为bytes类型--b'\xc4\xe3\xba\xc3'
15 
16 #再把此时的gbk转换成utf-8
17 s_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8")
18 print(s_to_utf8)
19 #输出结果为bytes类型--b'\xe4\xbd\xa0\xe5\xa5\xbd'
20 
21 #再把此时的utf-8转换成gb2312
22 s_to_gb2312 = s_to_utf8.decode("utf-8").encode("gb2312")
23 print(s_to_gb2312)
24 #输出结果为byts类型--b'\xc4\xe3\xba\xc3',因为gb2312字符集归属于gbk字符集,所以转换结果bytes相同
25 
26 #把gbk转换为gb2312
27 s_to_gbk_gb2312 = s_to_gbk.decode("gbk").encode("gb2312")
28 print(s_to_gbk_gb2312)
29 #输出结果为byts类型--b'\xc4\xe3\xba\xc3'
30 
31 
32 '''
33     encode是编码,里面传入的参数是需要转成的字符集,
34     decode是解码,里面传入的参数是本身的字符集,用本身的字符集解码为unicode字符集再转码
35     总结:python3基于unicode编码,若文件头声明为utf-8只是以utf-8字符集显示,基本的还是unicode
36          当使用unicode转换为utf-8时直接encode("utf-8")就可以了,
37          同理若使用unicode转换为gbk时直接encode("gbk")就可以了,
38          若使用utf-8转换成gbk则需要先解码decode("utf-8").encode("gbk")再编码为gbk
39          若使用utf-8转换成gb2312则需要先解码decode("utf-8").encode("gb2312")再编码为gb2312
40          若使用gbk转换成utf-8则需要先解码decode("gbk").encode("utf-8")再编码为utf-8
41          若使用gbk转换成gb2312则需要先解码decode("gbk").encode("gb2312")再编码为gb2312
42          gb2312同理...
43 '''

 

转载于:https://www.cnblogs.com/weijiazheng/p/10548567.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值