前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于python的编解码(decode, encode)

关于python的编解码(decode, encode)

作者头像
小莹莹
发布2018-04-23 16:30:35
8760
发布2018-04-23 16:30:35
举报

总结总结,本文仅适用于python2.x

默认编码与开头声明

首先是开头的地方声明编码

# coding: utf8

这个东西的用处是声明文件编码为utf8(要写在前两行内),不然文件里如果有中文,比如

代码语言:javascript
复制
a = '美丽'b = u'美丽'

中任何一种,运行前就会提示你SyntaxError,Non-ASCII character… 之类,因为python2.x的文件编码默认使用万恶的ascii 开头加上那句默认编码声明就会变成utf8,获取当前的默认编码

代码语言:javascript
复制
sys.getdefaultencoding()

unicode与utf8

在python中,使用unicode类型作为编码的基础类型,编解码要以其为中间形式过渡,即进行strunicode之间的转换。 解码然后再编码的过程,即str->unicode->str的过程。中间得到的叫做unicode对象

这里需要强调的是unicode是一种字符编码方法,是 “与存储无关的表示”,而utf8是一种以unicode进行编码的计算机二进制表示,或者说传输规范。gbkgb2312gb18030, utf8等属于不同的字符集,转换编码就是在它们中的任意两者间进行。

具体过程

具体的转换,比如直接将一个字符串encode成另一种字符集表示,注意此处是字符串,即typestr的,引号前没有加u前缀的

代码语言:javascript
复制
# coding: utf8s='美丽's.encode('gbk')

则实际上会先以默认编码进行decode,即decode('ascii'),开头声明了utf8,s的编码就是utf8,ascii解码不了utf8的字符会报错。那就改默认编码,

代码语言:javascript
复制
# coding: utf8import sys

reload(sys)
sys.setdefaultencoding('utf-8')

s='美丽's.encode('gbk')

这样把默认编码改成utf8,decode的时候就以默认编码utf8来进行,能够成功运行

或者decode时指定类型,

代码语言:javascript
复制
# coding: utf8import sys

s='美丽's.decode('utf8').encode('gbk')

对于typeunicode的,即加了u前缀的字符串,如上所说,直接encode即可

代码语言:javascript
复制
# coding: utf8import sys

s = u'美丽's.encode('gbk')

控制台的编码

这又是另一个让人困惑的地方——控制台的编码导致的乱码问题甚至是报错。一般个人用的电脑上控制台基本上都是utf8编码的,但运维的机器上基本全是ascii,print中文的时候就会有酸爽的问题。乱码问题一般发生在windows下面,因为那个编码的字符集很与众不同。所以当以正确方式编解码以后,还是出现问题,那问题很可能就出在控制台上了

来源:segmentfault

1、回复“数据分析师”查看数据分析师系列文章

2、回复“案例”查看大数据案例系列文章

3、回复“征信”查看相关征信的系列文章

4、回复“可视化”查看可视化专题系列文章

5、回复“SPPS”查看SPSS系列文章

6、回复“答案”查看hadoop面试题题目及答案

7、回复“爱情”查看大数据与爱情的故事

8、回复“笑话”查看大数据系列笑话

9、回复“大数据1、大数据2、大数据3、大数据4”查看大数据历史机遇连载

PPV课大数据ID: ppvke123 (长按可复制)

大数据人才的摇篮!专注大数据行业人才的培养。每日一课,大数据(EXCEL、SAS、SPSS、Hadoop、CDA)视频课程。大数据资讯,每日分享!数据咖—PPV课数据爱好者俱乐部!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PPV课数据科学社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 默认编码与开头声明
  • unicode与utf8
  • 具体过程
  • 控制台的编码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档