python编码
Posted yhengwei2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python编码相关的知识,希望对你有一定的参考价值。
py2编码
py2中的数据类型:str和unicode
str存储的是对应的字节,一个汉字占3个字节
# -*- coding: UTF-8 -*- s="余hello" print len(s) #8 print(repr(s)) #‘xe4xbdx99hello‘ print(type(s)) #<type ‘str‘>
unicode存储是对应的unicode
# -*- coding: UTF-8 -*- s=u"余hello" print len(s) #6 print(repr(s)) #u‘u4f59hello‘ print(type(s)) #<type ‘unicode‘>
py2特点:
print "余"+u"最帅" 报错
print "hello"+u"yu" 正确
py2编码的最大特点是Python 2 将会自动的将bytes数据解码成 unicode 字符串,Python 2 悄悄掩盖掉了 byte 到 unicode 的转换,让程序在处理 ASCII 的时候更加简单。你复出的代价就是在处理非 ASCII 的时候将会失败。
再来看看encode()和decode()两个basestring的实例方法,理解了str和unicode的区别后,这两个方法就不会再混淆了:
py3编码
py3里是str和bytes数据类型
str对应的是unicode,bytes对应的是bytes
import json s=‘苑昊‘ print(json.dumps(s)) #"u82d1u660a" b1=s.encode(‘utf8‘) print(b1,type(b1)) #b‘xe8x8bx91xe6x98x8a‘ <class ‘bytes‘> print(b1.decode(‘utf8‘))#苑昊 # print(b1.decode(‘gbk‘))# 鑻戞槉 b2=s.encode(‘gbk‘) print(b2,type(b2)) #‘xd4xb7xeaxbb‘ <class ‘bytes‘> print(b2.decode(‘gbk‘)) #苑昊
默认编码
py2默认的ASCII码,在程序开头需要加上#-*- coding: UTF-8 -*-,如果不加上这么一句话,程序一旦出现中文就会报错,对于中文这些特殊字符无法编码。
以上是关于python编码的主要内容,如果未能解决你的问题,请参考以下文章
从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration
《安富莱嵌入式周报》第279期:强劲的代码片段搜索工具,卡内基梅隆大学安全可靠C编码标准,Nordic发布双频WiFi6 nRF7002芯片