前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 默认编码的理解与设置

python 默认编码的理解与设置

作者头像
py3study
发布2020-01-09 16:10:30
9380
发布2020-01-09 16:10:30
举报
文章被收录于专栏:python3python3

 原链接:

http://notewo.sinaapp.com/blog/full_article/?blogid=54

python 里面的编码和解码,就是unicode  和str 这两种形式的相对转换。 编码: unicode  →→→ str 解码: str        →→→ unicode 有两个设置编码的知识点 1、文件开头的:# -*-  coding=utf8  -*-         python的默认脚本文件都是以utf8编码的,当文件中有非utf8编码范围内的字符的时候就要使用“编码提示”来修正。 2、sys.setdefaultencoding('utf-8') 先说下如何使用:

>>> import sys >>> reload(sys)

<module 'sys' (built-in)>

>>> sys.setdefaultencoding('utf8')

>>>

  reload(sys) 这一句是必须的,当脚本加载完毕之后,会把setdefaultencoding这个方法给删掉,我们需要reload(sys) 才可以使用。 用实例来理解它的作用:

>>> import sys

>>> sys.getdefaultencoding()

'ascii'

>>> str = "中文"

>>> print str

中文

>>> str.encode('utf8')

Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)

无法将str编码为utf8。 编码: unicode  →→→ str 解码: str        →→→ unicode >>> str.encode('utf8') 这一句在执行的时候,会先将str解码为ascii(也就是sys.setdefaultcoding()所设置的值,默认是ascii),再编码为utf8。 ascii并不是unicode的编码形式之一。所以无法进行这种类型的转换。 转换过程如下: str  --------> unicode --------------> str(utf8)                         |                         |               unicode这里就是指setdefaultcoding()所设的值。 再进行实验:

>>> import sys

>>> reload(sys)

<module 'sys' (built-in)>

>>> sys.setdefaultencoding('utf8')

>>> str.encode('utf8')

'\xe4\xb8\xad\xe6\x96\x87'

>>> print str

中文

>>>

这样子就可以了,转换流程变为如下: str ---------> unicode(utf8) -----------> str(utf8)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档