python 编码个人理解总结

        一直在用python2.7对其编码问题一直傻傻分不清,每次遇到问题都是百度,问题解决了,但是不总结,每次都需要百度,如死循环一般,今天痛下决心,搞清楚概念,大话聊聊,python编码的问题  

        百度了很多概念,首先是要从python编码和计算机内存编码说起。。。。。

一、python2,python3,计算机操作系统的默认编码

1.python2 默认编码的是ASCII ,ASCII编码是:大小写英文字母、数字和一些符号

2.python3 默认编码是utf-8, utf 是unicode 编码设计的一种存储和传输时候节省空间的编码方案(还有utf-16)

3.计算机内存默认编码是万国码 unicode  ,unicode 相当与编码界的大Boss啦,包含了全世界所有的语言

二、编辑器和内存的关系

1.打开编辑器,相当于开启一个进程,进程是在内存中执行的,保存写入的编辑器的内容,相当于从内存保存到硬盘的过程

2.再次打开已经保存的硬盘中的py文件,就是从硬盘读入内存,在内存中解释执行py文件

三、字符编码

经过一个过程:

  字符--------(翻译过程)------->数字

  这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码。

四、字符编码的使用

因为python2 中不能自动的把文件编码转化为unicode存在内存中,所以需要decode 解码和encode编码


python 编码个人理解总结_第1张图片

utf-8  ———————>decode(解码)—————————>unicode

unicode————————>encode(编码)————————>GBK/utf-8


python 编码个人理解总结_第2张图片

执行结果是这样的:


python 编码个人理解总结_第3张图片

1.utf-8转GBK打印乱码了,utf-8 不能直接转化为gbk ,首先是先将utf-8转化为unicode,在用 unicode 转为gbk

python 编码个人理解总结_第4张图片

2.如果服务端encode的编码格式是utf-8, 客户端内存中收到的也是utf-8编码的二进制

四、终端编码问题

windows 是gbk,文件为utf-8打印就会有乱码问题,需要将utf-8转化成unicode再转为gbk

"测试".decode('utf-8').encode('gbk'),才能打印出测试

mac的终端编码是GB2313,unicode ,utf-8等,可以设置很多所以无论打印gbk还是utf-8,还是unicode都不会乱码



python 编码个人理解总结_第5张图片

#coding=utf-8

s="测试"

print s

print type(s)

print repr(s)

t=s.decode('utf-8').encode('gbk')

y=s.decode('gbk')

h=s.decode('utf-8').encode('utf-8')

r=s.decode('utf-8')

print t ,y, h,r

print type(t),type(y),type(h),type(r)

print repr('\xe6\xb5\x8b\xe8\xaf\x95'.decode('utf-8'))

print u'\u6d4b\u8bd5'.encode('gb2312')


运行结果

娴嬭瘯

'\xe6\xb5\x8b\xe8\xaf\x95'

测试 濞村鐦?娴嬭瘯 娴嬭瘯

u'\u6d4b\u8bd5'

测试

你可能感兴趣的:(python 编码个人理解总结)