python2和python3编码

python2编码

          unicode:unicode 你好 u‘\u4f60\u597d‘
          | |                  | |
    encode(‘utf8‘)| |decode(‘utf8‘)      encode(‘gbk‘)| |decode(‘gbk‘)
          | |                  | |
          utf8                  gbk
编码后的str ‘\xe4\xbd\xa0\xe5\xa5\xbd‘     编码后的gbk u‘\u6d63\u72b2\u30bd‘

# str: bytes

>>> s = ‘你好 world‘
>>> print repr(s)
‘\xe4\xbd\xa0\xe5\xa5\xbd world‘
>>> print len(s)
12
>>> print type(s)
<type ‘str‘>

# unicode:unicode

>>> s = u‘你好 world‘
>>> print repr(s)
u‘\u4f60\u597d world‘
>>> print len(s)
8
>>> print type(s)
<type ‘unicode‘>

#unicode: 无论什么字符在Unicode都有一个对应。

python2的特点
1.在python2中print把字节转成了Unicode

2.python2中以默认已ASCII编码
[[email protected] ~]# cat python.py
#coding:utf8 # 告诉解释器以utf8编码
print ‘你好‘

python3编码
在python3中默认以utf8编码

            str:unicode 你好 u‘\u4f60\u597d‘
          | |                  | |
    encode(‘utf8‘)| |decode(‘utf8‘)      encode(‘gbk‘)| |decode(‘gbk‘)
          | |                  | |
          utf8                  gbk
编码后的str ‘\xe4\xbd\xa0\xe5\xa5\xbd‘     编码后的gbk u‘\u6d63\u72b2\u30bd‘

>>> s = ‘你好 world‘
>>> print (json.dumps(s))
"\u4f60\u597d world"
>>> print (len(s))
8
>>> print (type(s))
<class ‘str‘>

编码解码方式1:

>>> s = ‘你好 world‘
>>> b = s.encode(‘utf8‘)
>>> print (b)
b‘\xe4\xbd\xa0\xe5\xa5\xbd world‘
>>> s = b.decode(‘utf8‘)
>>> print (s)
你好 world
>>> s = b.decode(‘gbk‘)
>>> print (s)
浣犲ソ world

编码解码方式2:

>>> s = ‘你好 world‘
>>> b = bytes(s,‘gbk‘)
>>> print (b)
b‘\xc4\xe3\xba\xc3 world‘
>>> s = str(b,‘gbk‘)
>>> print (s)
你好 world

>>> s = ‘你好 world‘
>>> b = bytes(s,‘utf8‘)
>>> print (b)
b‘\xe4\xbd\xa0\xe5\xa5\xbd world‘
>>> s = str(b,‘utf8‘)
>>> print (s)
你好 world
>>> s = str(b,‘gbk‘)
>>> print (s)
浣犲ソ world

原文地址:https://www.cnblogs.com/rockley/p/8306868.html

时间: 2024-10-10 05:08:05

python2和python3编码的相关文章

4.python2与python3编码区别,以及字符串与字节的相互转换及其socket编程应用场景

知识点剖析 1.python2与python3的某些区别 其实一直想写这篇博客,实则在socket编程中,字符串,字节(byte),和bit流把我弄得晕头转向.确实这也是python3与python2的区别所在.我想在12期的时候,刚从python2转到python3的沛齐与Alex老师也是十分头疼,最近几天查看了相关资料与视频,才恍然大悟. 首先我们看一下下面的实例: 原因:在python2.7中,for循环遇到汉字,依然会按照字节进行循环,那么3个字节才能组成的汉字,单个输出只能时乱码. 解

day07 python2与python3 编码

详细文章: http://www.cnblogs.com/yuanchenqi/articles/5956943.html http://www.diveintopython3.net/strings.html 需知: 1.在python2默认编码是ASCII, python3里默认是unicode 2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-

python2和python3编码解码详解

今天让我们一起彻底揭开py编码的真相,包括py2和py3.有同学可能问:以后py3是大势所趋,还有必要了解py2那令人头疼的编码吗?答案是太有必要啦.py2在生产中还是中流砥柱. 什么是编码? 基本概念很简单.首先,我们从一段信息即消息说起,消息以人类可以理解.易懂的表示存在.我打算将这种表示称为"明文"(plain text).对于说英语的人,纸张上打印的或屏幕上显示的英文单词都算作明文. 其次,我们需要能将明文表示的消息转成另外某种表示,我们还需要能将编码文本转回成明文.从明文到编

python2与python3编码

#coding:utf8#一#1.在python2中,默认以ASCII编码chcp 936import sysprint sys.getdefaultencoding()# ascii#str:bytess1='来星hello' #存的是字节,数据类型是str(bytes就是str)# print len(s1)# 9# print repr(s1) # '\xe8\xa2\x81\x16\xb5\x5ahello'#2.unicodes2=u'来童星hello'# 存的unicodeprint

python2和python3编码区别

在python2中主要有str和unicode两种字符串类型,而到python3中改为了bytes和str,并且一个很重要的分别是,在python2中如果字符串是ascii码的话,str和unicode是可以直接进行连接和比较,但是到python3中就不行了,bytes和str是两个独立的类型.另一个重要的是python2中不管是str还是unicode都可以直接写入文件,而不需要加上它是不是str的类型写入方式,但是在python3中如果是写或者读bytes类型就必需带上'b'. 原文地址:h

python2与python3编码(练习)

#_author:来童星#date:2019/12/9import jsons='star'a=s.encode('utf8')print(s,type(s))# star <class 'str'>print(a.decode('utf8'))# star s1='星星' # unicode类型,一个汉字对应三个字节a1=s1.encode('utf8')#按照utf编码print(a1,type(a1))# b'\xe6\x98\x9f\xe6\x98\x9f' <class 'by

python2和python3中的编码问题

开始拾起python,准备使用python3, 造轮子的过程中遇到了编码的问题,又看了一下python3和python2相比变化的部分. 首先说个概念: unicode:在本文中表示用4byte表示的unicode编码,也是python内部使用的字符串编码方式. utf-8:在本文中指最少1byte表示的unicode编码方式 我在使用 if isinstance(key,unicode): key= key.encode('utf-8') 的时候,发现key值被转成了b'foo',b'bar'

从python2,python3编码问题引伸出的通用编码原理解释

今天使用python2编码时遇到这样一条异常UnicodeDecodeError: ‘ascii’ code can’t decode byte 0xef 发现是编码问题,但是平常在python3中几乎没有遇到过,所以特意查了资料,原来python3和python2对于字符串的理解不一样,在python3中,字符串默认unicode编码 一.解释python2和python3文本处理方式 在Python3当中,文本字符串类型(使用Unicode数据存储)被命名为 str , 字节字符串类型被命名

python2和python3的编码问题

python2中有两种类型 str字符串和unicode字符串 python3则改成了 bytes和str字符串 在python2中‘xxx’和b‘xxx’都是str字符串,u‘xxx’是unicode字符串,即python3中的bytes在python2是不存在的,都归属于str字符串 在python3中unicode是不存在的,被归并到str字符串里面的,即‘xxx’和u‘xxx’都是str字符串,b‘xxx’是bytes 主要的原因是python2的默认编码是asscii码,而python