python 2 or 3 的字符编码转换

作者: print("") 分类: python 发布时间: 2018-04-13 21:40


字符编码与转码

http://www.cnblogs.com/yuanchenqi/articles/5956943.html

http://www.diveintopython3.net/strings.html

需知:

1.在python2默认编码是ASCII, python3里默认是unicode

2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间

3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

 上图仅适用于py2

在python2 中尝试一下

# -*- coding: utf-8 -*- 
s="你好"
print(s)

python2  打印默认编码:
[root@liang ~]# cat b.py 
#-*- coding:utf-8 -*-
import sys
print(sys.getdefaultencoding())
[root@liang ~]# python b.py 
ascii

从utf-8 转换到gbk

#s_to_gbk=s.docode("utf-8").encode("gbk")
# -*- coding: utf-8 -*-
s="你好"
s_to_gbk=s.decode("utf-8").encode("gbk")
print(s_to_gbk)

gbk转为utf-8

# -*- coding: utf-8 -*-
s="你好"
s_to_gbk=s.decode("utf-8").encode("gbk")
print(s_to_gbk)
gbk_to_utf8=s_to_gbk.decode("gbk").encode("utf-8")
print(gbk_to_utf8)

在python3 中 默认是unicode 的模式。所以只需要encode(“gbk”)

s="你好"
s=s.encode("gbk")
print(s)

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

一条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注