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