当前位置: 首页 > 后端技术 > Python

py2和py3编码问题

时间:2023-03-26 18:07:40 Python

python2py2默认编码为ascii,ascii只支持英文字符In[2]:sys.getdefaultencoding()Out[2]:'ascii'In[4]:a='Hello'In[5]:aOut[5]:'\xe4\xbd\xa0\xe5\xa5\xbd'#输出的是16进制的内存地址,其实是bytes类型In[6]:type(a)#类型是str,即实际上bytesOut[6]:strIn[7]:b='hello'In[8]:bOut[8]:'hello'In[9]:type(b)Out[9]:strIn[11]:a1=a.decode('utf-8')In[12]:a1Out[12]:u'\u4f60\u597d'#根据utf-8字符集解码字节二进制In[13]:type(a1)Out[13]:unicode#In[16]:sys.getsizeof(a)#字节类型helloOut[16]:43#字节大小In[17]:sys.getsizeof(a1)#Hello解码后Out[17]:54In[19]:b1=b.decode('utf-8')In[20]:b1Out[20]:u'hello'In[22]:sys.getsizeof(b)#bytes类型占字节少Out[22]:42In[23]:sys.getsizeof(b1)#Unicode占用较多的字节Out[23]:60注意:python2的basestring和str是不一样的,basestring包含两种类型的bytes和unicode,str是字节类型。printisinstance(u'aa',basestring)#Trueprintisinstance('aa',basestring)#Trueprintisinstance(u'aa',str)#Falseprintisinstance('aa',str)#Truepython3py3default编码为unicode,utf-8字符集In[1]:importsysIn[2]:sys.getdefaultencoding()Out[2]:'utf-8'In[3]:a='Hello'In[4]:aOut[4]:'Hello'In[5]:type(a)#py3的str是strOut[5]:strIn[6]:a1=a.encode('utf-8')In[7]:a1Out[7]:b'\xe4\xbd\xa0\xe5\xa5\xbd'#只有按照默认编码格式编码后才是bytesIn[8]:type(a1)Out[8]:bytes

最新推荐
猜你喜欢