python 编码 乱码问题 ascii unicode utf-8
2016-09-24 20:43
465 查看
基础知识部分
首先需明白python2.7默认使用的是ascii,而现在python3.x默认使用的是unicode。下面内容基于python2.7。
所以我们需要在文件头部添加:
来告诉python2.7此文件要用utf-8编码来读取。
python的解码,编码是python自动进行的,如果我们没有指明解码方式,python 就会使用 sys.defaultencoding 指明的方式来解码。python2.7的函数str()和unicode()默认将对象转成ascii编码。
但是对于中文,ascii编码是无法表示的。因此我们需要用sys.setdefaultencoding(‘utf-8’)来设置string对象默认的编码。
那么字符串如何在str和unicode间进行转换呢?python提供了两个函数:
python直接按照utf-8输出到控制台。所以我们可以改变文件编码:
或者使用unicode类型进行输出,会自动转换。
首先需明白python2.7默认使用的是ascii,而现在python3.x默认使用的是unicode。下面内容基于python2.7。
一、文件编码
一般文件使用的是utf-8或者bgk编码进行存储。但是由于python2.7默认使用ascii,所以python2.7在运行py后缀文件时也是默认以ascii编码读取文件。如果文件中没有中文不会出现问题。但是如果有中文的话,由于中文编码超出了ascii编码范围,所以python2.7将会报错。所以我们需要在文件头部添加:
#coding:utf-8 或者 #!/usr/bin/python # -*- coding: utf-8 -*-
来告诉python2.7此文件要用utf-8编码来读取。
在文件中设置后我们可以使用 a = u'哈';python会自动使用utf-8来读取汉字,并将其转换为Unicode对象。
二、字符串编码
python2.7和字符串相关的数据类型,分别是标准字符串(str)是单字节字符序列,Unicode字符串(unicode)是双字节字符序列。。python的解码,编码是python自动进行的,如果我们没有指明解码方式,python 就会使用 sys.defaultencoding 指明的方式来解码。python2.7的函数str()和unicode()默认将对象转成ascii编码。
但是对于中文,ascii编码是无法表示的。因此我们需要用sys.setdefaultencoding(‘utf-8’)来设置string对象默认的编码。
import sys reload(sys) sys.setdefaultencoding('utf-8')
那么字符串如何在str和unicode间进行转换呢?python提供了两个函数:
b = u'哈' //b为unicode对象 b.encode('utf-8') //将b从unicode类型转为utf-8类型 b.decode('utf-8') //将b从utf-8类型转换为Unicode类型
三、window控制台输出
window控制台默认使用gbk编码。如果你设置了# -*- coding: utf-8 -*-
python直接按照utf-8输出到控制台。所以我们可以改变文件编码:
# -*- coding: gbk -*-
或者使用unicode类型进行输出,会自动转换。
相关文章推荐
- [Python爬虫] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题
- Python 编码问题 utf-8 和 unicode
- python编码问题 -- UnicodeEncodeError: 'ascii' codec can't encode characters in position
- 聊聊计算机中的编码(Unicode,GBK,ASCII,utf8,utf16,ISO8859-1等)以及乱码问题的解决办法
- Python中GBK, UTF-8和Unicode的编码问题
- 聊聊计算机中的编码(Unicode,GBK,ASCII,utf8,utf16,ISO8859-1等)以及乱码问题的解决办法
- Python中GBK, UTF-8和Unicode的编码问题
- Python unicode/utf-8编码问题简单解决方案
- 计算机编码问题ASCII,UTF-8,Unicode
- VIM 打开 Unicode、UTF-8 等编码文件的乱码问题
- python 编码 问题 UTF-8 unicode
- Python 编码问题 utf-8 和 unicode
- 编码问题 ASCII GB2312 unicode UTF-8
- python编码及文件编ASCII,Unicode和UTF-8相关知识
- python中的编码问题:以ascii和unicode为主线
- 数据库乱码问题 & Python 编码问题(Unicode 的 encode、decode 相互转换 )
- python中的编码问题:以ascii和unicode为主线
- 解决Python写入文件编码问题(UnicodeEncodeError: 'ascii' codec can't encode characters in...)
- Python基础---字符串编码(Unicode, UTF-8, ASCII)
- Python编码_ASCII_Unicode_UTF-8