码迷,mamicode.com
首页 > 编程语言 > 详细

python编码

时间:2018-08-30 02:04:59      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:src   port   bytes   repr   实例   encode   class   一句话   alt   

py2编码

py2中的数据类型:str和unicode

 

str存储的是对应的字节,一个汉字占3个字节

# -*- coding: UTF-8 -*-
s="余hello"
print len(s)    #8
print(repr(s))  #‘\xe4\xbd\x99hello‘
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))   #"\u82d1\u660a"
b1=s.encode(utf8)

print(b1,type(b1))     #b‘\xe8\x8b\x91\xe6\x98\x8a‘ <class ‘bytes‘>

print(b1.decode(utf8))#苑昊
# print(b1.decode(‘gbk‘))# 鑻戞槉

b2=s.encode(gbk)
print(b2,type(b2))  #‘\xd4\xb7\xea\xbb‘ <class ‘bytes‘>
print(b2.decode(gbk)) #苑昊

 

默认编码

py2默认的ASCII码,在程序开头需要加上#-*- coding: UTF-8 -*-,如果不加上这么一句话,程序一旦出现中文就会报错,对于中文这些特殊字符无法编码。

 

python编码

标签:src   port   bytes   repr   实例   encode   class   一句话   alt   

原文地址:https://www.cnblogs.com/yhengwei2018/p/9557616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!