python中的编码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的编码问题相关的知识,希望对你有一定的参考价值。

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中的编码问题的主要内容,如果未能解决你的问题,请参考以下文章

Python中的编码问题:ASCII码 Unicoden编码 UTF-8编码

快速理解python2中的编码问题

python中的字符串编码问题——2.理解ASCII码ANSI码Unicode编码UTF-8编码

python中的编码问题

Python2和Python3中的字符串编码问题解决

python语言中的编码问题(续)