Python中的编码

Python处理字符串,写文件时会碰到许多的编码问题,特别是涉及到中文的时候,非常烦人,但又不得不学。下面主要记录工作过程中碰到的Python编码问题。

1. 字符串编码

Python的字符串类型为str,可以通过type函数查看返回的类型。Python中字符串默认的编码方式需要通过sys.getfilesystemencoding()查看,通常是utf-8u'中文'构造出来的是unicode类型,不是str类型。

# 查看字符串编码方式
>>> import sys
>>> print sys.getfilesystemencoding()
utf-8

>>> s1 = '中国'
>>> s2 = u'中国'
>>> type(s1)
<type 'str'>
>>> type(s2)
<type 'unicode'>

str类型和unicode类型分别有decodeencode函数。str.decode用来将str转为unicodeunicode.encode用来将unicdoe转为str。用法如下:

# decode
>>> s1.decode('utf8')
u'\u4e2d\u56fd'
>>> type(s1.decode('utf8'))
<type 'unicode'>

# encode
>>> s2.encode('utf8')
'\xe4\xb8\xad\xe5\x9b\xbd'
>>> type(s2.encode('utf8'))
<type 'str'>

2. 代码文件编码

py文件默认的编码是ASCII编码,中文显示时会进行ASCII编码到系统默认编码的转换,在运行Python文件时经常会报错。因此需要设置py文件的编码为utf-8。设置方式如下:

# _*_ coding: utf-8 _*_        

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏海说

深入理解计算机系统(3.3)---数据传送(或者说复制)指令详解

  上一章我们已经介绍了汇编语言的基础部分,包括数据格式、寄存器以及操作数的标识方式,接下来我们就应该去认识一下汇编语言当中的各个指令了。这些指令大多数都非常简...

955
来自专栏菩提树下的杨过

bash/shell编程学习(1)

1)定义变量 myvar=abc #注:等号前后不能加空格 #或 myvar="abc" #或 myvar='abc' #注:如果变量后面的值中间本身没有空格,...

1889
来自专栏后端技术探索

实用篇-无处不在的Location

location配置是nginx模块化配置中最出色的一个设计,几乎所有nginx的业务场景都要通过书写多个location配置来顺应业务需要。语法配置和执行规则...

1112
来自专栏前端菜鸟变老鸟

ES6(二):Promise

ES6之前解决异步编程只能使用回调函数或事件,ES6中加入了 Promise,使得异步编程更加简洁直观和合理

1103
来自专栏天天

执行上下文

解析: a)先填充参数,x:undefined;y:undefined;z:undefined; b)函数申明,在vo对象里有了function fn(){};...

1344
来自专栏C/C++基础

段错误之memset对类对象的误用

使用new定义一个DICCUOriginalTask的对象指针之后,使用memset将对象实体置为0之后,在使用delete析构该对象,就会出现莫名其妙的段错误...

851
来自专栏海说

深入理解计算机系统(3.3)---数据传送(或者说复制)指令详解

  上一章我们已经介绍了汇编语言的基础部分,包括数据格式、寄存器以及操作数的标识方式,接下来我们就应该去认识一下汇编语言当中的各个指令了。这些指令大多数都非常简...

963
来自专栏IT笔记

聊聊Servlet、Struts1、Struts2以及SpringMvc中的线程安全

很多初学者,甚至是工作1-3年的小伙伴们都可能弄不明白?servlet Struts1 Struts2 springmvc 哪些是单例,哪些是多例,哪些是...

57414
来自专栏WindCoder

PHP内存中的对象和引用简介

我首次起草这篇文章是在备战我的PHP认证时,以便更好地了解PHP如何管理内存中的变量和对象。经过大量研究,我意识到找到我的问题的答案并不容易,所以一旦我完成了,...

1021
来自专栏静默虚空的博客

Shell 快速指南

Shell 快速指南 ███████╗██╗ ██╗███████╗██╗ ██╗ ██╔═══...

26910

扫码关注云+社区