python字符编码与解码 unicode,str

Posted

tags:

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

字符编码

  计算机中的字符都是以特定的编码形式存放的,从最早的ascii到后来的Unicode以及UTF-8, 在python中, 字符串str也是是区分编码的,在各种编码的字符串之间,有一座桥梁,就是unicode类型

 

str, unicode

  str转到unicode需要解码,即decode;反之,unicode转到str需要编码,即encode:

  str              -- (decode) -->         unicode

  unicode     -- (encode) -->          str

  str也可以直接用encode方法把一种编码的str转到另外一种编码的str,其实表面上的直接转码还是经过了先解码后编码的过程,就是说:str.encode()等价于str.decode(sys.defaultencoding).encode(),sys.defaultencoding是python默认编码,一般是ascii编码。类似地,对于unicode类型,也有:unicode.decode()等价于unicode.encode(sys.defaultencoding).decode()

例子代码:

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 # @Time    : 2017/7/17 22:09
 4 # @Author  : dswang
 5 
 6 import sys
 7 
 8 if __name__ == __main__:
 9     print sys.getdefaultencoding()
10     x = 
11     print type(x)
12     print repr(x)
13 
14     y = x.decode(utf-8)
15     print type(y)
16     print repr(y)
17 
18     z = y.encode(gb2312)
19     print type(z)
20     print repr(z)

结果为:

ascii
<type str>
\xe4\xb8\xa5
<type unicode>
u\u4e25
<type str>
\xd1\xcf

说明:文件头注释中的-*- coding: utf-8 -*-用来指明文件的编码方式为utf-8,代码中str的编码也默认为utf-8。

 

参考文章

【1】字符编码笔记:ASCII,Unicode和UTF-8 by 阮一峰

以上是关于python字符编码与解码 unicode,str的主要内容,如果未能解决你的问题,请参考以下文章

了解bytesstr与unicode的区别

python2和python3 的区别

编码与解码

Python:编码与解码和转义字符

Python解码编码问题

编码 解码 python