python学习:字符编码与转码

在Python3中必须先弄清楚的三个问题:1、Python3中默认是Unicode编码。2、gbk --> utf-8、utf-8 --> gbk都要通过Unicode“中转”一下。3、在Python3中,encode后不仅转了编码,还把结果转成了bytes类型。如果要显示中文,再decode一下就可以了。
import sys

print("Defaultencoding :", sys.getdefaultencoding())

s = ‘你好‘   # s是unicode
# 转为UTF-8编码
print(s.encode(‘UTF-8‘))
# 转为GBK编码
print(s.encode(‘GBK‘))
# 转为ASCII编码(报错为什么?因为ASCII码表中没有‘你好’这个字符集~~)
# print(s.encode(‘ASCII‘))

print("---------utf-8 --> gbk---------")
# utf-8 --> gbk
s = ‘你好‘   # s是unicode
# 可以直接encode转,因为s就是unicode,不需要再转成uincode
s_gbk = s.encode(‘gbk‘) # 此时已经转成了gbk,结果是一个bytes类型:b‘\xc4\xe3\xba\xc3‘
print(s_gbk)
print(s_gbk.decode(‘gbk‘)) #为了显示中文,才decode

print("---------gbk --> utf-8---------")
# gbk --> utf-8
s = ‘你好‘   # s是unicode
s_gbk = s.encode(‘gbk‘) # 先转换成gbk,再gbk --> utf-8
# 先decode解码,告诉decode原来是什么编码,然后再encode指定要转换成的目标编码
s_utf8 = s_gbk.decode(‘gbk‘).encode(‘utf-8‘) # 此时已经转成了utf-8,结果是一个bytes类型:b‘\xe4\xbd\xa0\xe5\xa5\xbd‘
print(s_utf8)
print(s_utf8.decode()) #为了显示中文,才decode

print("---------gbk --> gb2312---------")
# gbk --> gb2312
s = ‘你好‘   # s是unicode
s_gbk = s.encode(‘gbk‘) # 先转换成gbk,再gbk --> gb2312 ,模拟需要
s_gb2312 = s_gbk.decode(‘gbk‘).encode(‘utf-8‘).decode(‘utf-8‘).encode(‘gb2312‘)
print(s_gb2312)
print(s_gb2312.decode(‘gb2312‘))

print("---------gb2312 --> gbk---------")
# gb2312 --> gbk
s = ‘你好‘   # s是unicode
s_gb2312 = s.encode(‘gb2312‘) # 先转换成gbk,再gb2312 --> gbk,模拟需要
s_gbk = s_gb2312.decode(‘gb2312‘).encode(‘utf-8‘).decode(‘utf-8‘).encode(‘gbk‘)
print(s_gbk)
print(s_gbk.decode(‘gbk‘))

print("---------utf-8 --> gb2312---------")
# utf-8 --> gb2312
s = ‘你好‘   # s是unicode
s_gb2312 = s.encode(‘gb2312‘)
print(s_gb2312.decode(‘gb2312‘))

运行结果:
Defaultencoding : utf-8
b‘\xe4\xbd\xa0\xe5\xa5\xbd‘
b‘\xc4\xe3\xba\xc3‘
---------utf-8 --> gbk---------
b‘\xc4\xe3\xba\xc3‘
你好
---------gbk --> utf-8---------
b‘\xe4\xbd\xa0\xe5\xa5\xbd‘
你好
---------gbk --> gb2312---------
b‘\xc4\xe3\xba\xc3‘
你好
---------gb2312 --> gbk---------
b‘\xc4\xe3\xba\xc3‘
你好
---------utf-8 --> gb2312---------
你好

原文地址:https://www.cnblogs.com/Ryan-Fei/p/12103668.html

时间: 2024-11-03 01:47:32

python学习:字符编码与转码的相关文章

Python学习-字符编码的理解

Unicode编码和ASCII码两者都是机器能够理解的编码,你就是说出现一个码,计算机知道它对应哪种符号.因为这种编码形式将不同的字符全都和电平的高低电位联系在一起. Unicode,这种编码是全球通用的编码,就是说所有计算机都包含的编码.包含 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),这三种形式. 也就是说utf-8,就是一种Unicode的编码. utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间.

Python全栈开发之Python基础-字符编码与转码

详细文章: http://www.cnblogs.com/yuanchenqi/articles/5956943.html http://www.diveintopython3.net/strings.html 需知: 1.在python2默认编码是ASCII, python3里默认是utf-8 2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-8就是unicode 3.在py3中encode,在转码的同时还会把str

python学习笔记(集合的使用、文件操作、字符编码与转码、函数)

集合 集合(set):把不同的元素组成一起形成集合,是python基本的数据类型. 集合元素(set elements):组成集合的成员 为什么需要集合? 集合的作用 1 .列表去重复数据 按照现有知识的解决思路:先设置空列表,然后使用for寻获,把需要去重的列表的第一个数据放到新列表中,然后依次取出第二个数据,把第二个数据和第一个数据作比较,如果不一样,则存入新列表中:以此类推,每取一次都要和新列表中的数据作对比,不一样的则添加入新列表中. 2. 关系测试 比如有学员同时报了python班和l

Python——day3_基础1_集合,文件操作,字符编码与转码

集合 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = set([3,5,9,10]) #创建一个数值集合 t = set("Hello") #创建一个唯一字符的集合 a = t | s # t 和 s的并集 b = t & s # t 和 s的交集 c = t – s # 求差集(项在t中,但不在s中) d = t ^ s # 对称差集(项在t或s中,但不会同时

python字符编码与转码

python 2.x 字符编码与转码 打印系统默认编码格式 import sys print(sys.getdefaultencoding()) UTF-8 转 gbk 方式:utf-8--转成--unicode--转成--gbk a = "你好" print a utf8_to_unicode = a.decode("utf-8")                 #utf-8转unicode print utf8_to_unicode unicode_to_gb

Python基础3 文件操作、字符编码与转码

文件操作 对文件操作过程 打开文件,得到文件句柄赋值给变量 操作 关闭文件 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[可读:   不存在则创建:存在则只追加内容:] "+" 表示可以同时读写某个文件 r+,可读写文件.[可读:可写:可追加] w+,写读 a+,同a "U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用) rU r+U "b

Python 三级菜单-字符编码和转码-集合的操作-文件的操作

三级菜单: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店

Python常见字符编码间的转换

学习Python,字符编码间的转换是绕不过去的一只拦路虎,不把编码彻底搞明白,总有一天它会猝不及防坑你一把. Python2.x和Python3.x在字符编码的设置上也有很大区别(Python3未来将是主流,所以Python3为主),今天我们就来一起学习下. 上一篇文章里我已经简述了Python的常见编码了,这里就不再赘述了,还不清楚的小伙伴可以先去看下:     http://www.cnblogs.com/schut/p/8406897.html 一.Unicode 和 UTF-8的纠葛 U

python之字符编码

(一)什么是字符编码: 计算机中所有的数据,包括文件,图片,视频,音频等都是以二进制的方式 存储的,计算机只能识别0,1这样的机器语言.而我们想让计算机替我们工作必须能让计算机能够识别我们对它发出的指令,那么就需要一种方式把我们人类的语言翻译成计算机能听懂的语言.这个翻译的过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码. (二)字符编码的发展历程: 阶段一,ASSCII码:一个bytes代表一个字符(英文字符以及键盘上其它所有的字符)1bytes=8bit,8bit可以表

python 学习笔记-----编码问题

1.python 最早支持的是ASCII编码. 所以对于普通的字符串"ABC"为ASCII编码的形式.字母和数字之间的转换函数为ord('字母')和chr(‘数字’)函数. ord(‘A’)  输出 65     chr(65)输出 ‘A’ 2.后来添加了Unicode编码: 形式:u‘...’     例如 u‘中文’   用print 输出则为:中文   直接输出为一串编码字符 3.Unicode和utf-8 之间的转换: a.Unicode转换为utf-8的形式:u‘...’.e