Python中的编码
2017-09-07 本文已影响22人
SnailTyan
文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
Python处理字符串,写文件时会碰到许多的编码问题,特别是涉及到中文的时候,非常烦人,但又不得不学。下面主要记录工作过程中碰到的Python编码问题。
1. 字符串编码
Python的字符串类型为str
,可以通过type
函数查看返回的类型。Python中字符串默认的编码方式需要通过sys.getfilesystemencoding()
查看,通常是utf-8
。u'中文'
构造出来的是unicode
类型,不是str
类型。
# 查看字符串编码方式
>>> import sys
>>> print sys.getfilesystemencoding()
utf-8
>>> s1 = '中国'
>>> s2 = u'中国'
>>> type(s1)
<type 'str'>
>>> type(s2)
<type 'unicode'>
str
类型和unicode
类型分别有decode
和encode
函数。str.decode
用来将str
转为unicode
,unicode.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 _*_