博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day03-字符编码与转换
阅读量:6982 次
发布时间:2019-06-27

本文共 1642 字,大约阅读时间需要 5 分钟。

1、编码常识

  • 在python 2中默认编码是 ASCII,而在python 3中默认编码是 unicode
  • unicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常用的unicode版本,但是在文件里存的还是utf-8,因为utf8省空间
  • 在python 3,encode编码的同时会把stringl变成bytes类型,decode解码的同时会把bytes类型变成string类型
  • 在unicode编码中 1个中文字符=2个字节,1个英文字符 = 1个字节,切记:ASCII是不能存中文字符的
  • utf-8是可变长字符编码,它是unicode的优化,所有的英文字符依然按ASCII形式存储,所有的中文字符统一是3个字节
  • unicode包含了所有国家的字符编码,不同字符编码之间的转换都需要经过unicode的过程
  • python本身的默认编码是utf-8

 

在Python2.X中,默认编码是ASCII

#-*- encoding:utf-8 -*-

import sys

print(sys.getdefaultencoding())  #打印当前默认编码

s = '你好!!!'          

s_to_unicode = s.decode('utf-8') #需要指定编码方式为utf-8(否则会使用默认编码)

print(s_to_unicode)     #此时可以打印中文

 

2、Python2.x  utf-8转换成gbk格式

1 #-*- encoding:utf-8 -*-2 s = '你好!!!'           3 s_to_unicode = s.decode('utf-8') #需要指定编码方式为utf-8(否则会使用默认编码)4 s_to_gbk = s_to_unicode.encode('gbk')5 合成一句6 #s_to_gbk = s.decode('utf-8').encode('gbk')7 print(s_to_gbk)

3、Python2.x  gbk转换成utf-8格式

1 #-*- encoding:utf-8 -*-  #属于文件编码2 s = '你好!!!'          #默认编码也是utf-83 s_to_gbk = s.decode('utf-8').encode('gbk')4 gbk_to_utf-8 = s_to_gbk.decode(‘gbk’).encode(‘utf-8’)5 print(gbk_to_utf-8)

4、Python3.x  unicode转换成gbk,gbk再转换成utf-8,utf-8转换成unicode

1 s = '你好'     #python3 默认是unicode 2  3 s_gbk = s.encode("gbk") #将unicode转换成gbk 4  5 print(s_gbk)    6 print(s.encode())#默认解码成utf-8 7  8 gbk_to_utf8 = s_gbk.decode('gbk').encode('utf-8') 9 print(gbk_to_utf8)10 11 utf8_to_unicode=gbk_to_utf8.decode('utf-8')12 print(utf8_to_unicode)13 14 输出结果:15 utf-816 b'\xc4\xe3\xba\xc3'            #encode会将结果变成二进制编码17 b'\xe4\xbd\xa0\xe5\xa5\xbd' 18 b'\xe4\xbd\xa0\xe5\xa5\xbd'
你好                          #decode会将结果变成字符
 

 

转载于:https://www.cnblogs.com/Study-Blog/p/6580861.html

你可能感兴趣的文章
【待补】java开发Web Service
查看>>
两个有用的数组扩展方法
查看>>
英语发音规则---H字母
查看>>
js进阶 10-11/12 表单伪类选择器的作用
查看>>
C#中Invoke的用法
查看>>
pxe无人值守安装操作系统
查看>>
UESTC 2014 Summer Training #11 Div.2
查看>>
[笔记] SDRAM读写控制
查看>>
size_t的定义
查看>>
mybatis 模糊查询 like的三种方式
查看>>
VML相关
查看>>
HDU 1051 - Rightmost Digit
查看>>
5_2 实现过程中
查看>>
1035. 插入与归并(25)
查看>>
第二周进度总结
查看>>
JavaScript 精粹
查看>>
Android组件化和插件化开发
查看>>
远程更改ESXi主机IP
查看>>
【java】 虹软ArcFace 2.0 人脸信息识别(年龄、性别)
查看>>
Log4j 配置文件(log4j.properties)的所在路径问题(转)
查看>>