码迷,mamicode.com
首页 > 编程语言 > 详细

【python中的编码问题】

时间:2017-11-17 18:30:08      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:读取   前缀   unicode编码   encoding   就是   替代   文件的   codec   内存   

1、首先要在开头说明编码方式为:utf-8

例如:-*- coding: utf-8 -*-

2、如果遇到字符串,立刻转化为unicode,不要使用str(),直接使用unicode()

unicode_str = unicode(‘中文‘, encoding=‘utf-8‘)
print unicode_str.encode(‘utf-8‘)

3、如果是对于文件操作,打开文件的时候,最好使用codecs.open,替代open

import codecs
codecs.open(‘filename‘, encoding=‘utf8‘)

4、unicode通过encode编码转化成str,str通过decode解码转化成unicode

 

举个栗子:一个utf-8格式的字符串,先被解码为unicode,这时候不能直接输出,encode编码后就可以输出了

当对字符串进行编码的时候,会先用默认编码将自己解码为unicode,然后再将unicode编码为你指定的编码

一些个人理解,一开始的计算机只支持ASCII码,因为是美国人发明的,所以只支持127个字符;后来为了统一,出现了unicode码,也叫万国码,但是unicode编码的英文会比ASCII码多一倍存储空间,所以就出现了把unicode编码转化为可变长编码的UTF-8编码方式;在计算机内存中,统一使用unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

*****python的字符串类型是str,在内存中以unicode表示,一个字符对应若干个字节,如果要在网络上传输或者保存到磁盘上,就需要把str变为bytes。

python中,bytes类型的数据用带b的前缀的单引号或者双引号表示。以unicode表示的str通过encode()方法可以编码为指定的bytes。

*****反过来,如果从网络或者磁盘上读取了字节流,那么读到的数据就是bytes,要把bytes变为str,就要用到decode()方法。

【python中的编码问题】

标签:读取   前缀   unicode编码   encoding   就是   替代   文件的   codec   内存   

原文地址:http://www.cnblogs.com/jinshengshun/p/7852574.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!