Python字符编码与解码

一. 编码与解码

"""
英文字符 -----------unicode二进制(内存) ------>ASCII二进制(硬盘)
中文, 英文字符 ------unicode二进制(内存) ------>GBK二进制(硬盘)
日文, 英文字符 ------unicode二进制(内存) ------>Shift-JIS二进制(硬盘)
万国字符 -----------unicode二进制(内存) ------>utf-8二进制(硬盘)
           编码    --------------->    编码 ---------->
           解码    <---------------    解码 <----------
"""

二. 结论

"""
存不乱码: 用utf-8格式存入硬盘
取不乱码: 在存不乱的前提下, 采用和当初存数据时一样的编码格式
控制读文件到内存第2阶段不乱码: 加文件头#coding:文件当初存时候的编码
保证Python2第3阶段不乱码须指定unicode: 变量名 = u"字符串变量值", Python3不用
"""

三. 文件头格式

"""
#coding:gbk  # 一定要首行,指定文件当初存的编码如utf-8,gbk,控制读文件到内存阶段不乱码
Python3默认utf-8, Python2默认用ASCII, 所以要加文件头#coding:
内存中编码格式都是unicode,但是Python2会再转成文件头中指定别的编码,故要加 u"字符串变量值"
"""

四. 编码

语法之数据类型角度: str ------> bytes

内存编码角度: unicode ------> gbk

x = "上"  # <class 'str'>
res = x.encode("gbk")  # 现为2阶段在内存中的unicode转成gbk
print(res, type(res))  # b'\xc9\xcf',<class 'bytes'>,\x指16进制

五. 解码

语法之数据类型角度: bytes ------> str

内存解码角度: gbk ------> unicode

xx = res.decode("gbk")  # 2阶段在内存中将gbk解码成unicode,按当初存的编码格式解码
print(xx, type(xx))  # 上 <class 'str'>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值