美文网首页Python
Python字符编码与解码

Python字符编码与解码

作者: xilifeng | 来源:发表于2020-08-06 11:01 被阅读0次

一. 编码与解码

"""
英文字符 -----------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'>

相关文章

网友评论

    本文标题:Python字符编码与解码

    本文链接:https://www.haomeiwen.com/subject/dbrzrktx.html