3.编码问题

8位(bit)=1字节(Byte),1024字节=1KB

【小技巧】在文档中,按住atl+数字,松开,会直接显示此数字对应的unicode码?

==================================

ASCII码:使用指定的【7 位或8 位】(1字节),二进制数组合(即0和1),来表示128 或256 种可能的字符

1.美国人发明(American Standard Code for Information Interchange)

===============================================================================

Unicode码:使用全【16位】(2字节), 表示可能的字符。

1.将所有语言统一到一个编码里(统一码、万国码、单一码)

2.因为是固定长度,对内存操作来说非常简单

===============================================================================

utf-8码:用【8到48位】(1到6个字节),表示可能的字符。

1.是一种针对Unicode的【可变长度】字符编码,又称万国码(8-bit Unicode Transformation Format)

2.用于存储,传输里节省资源。但在内存里问题会变复杂,长度不停变

3.遇英文变1字节、汉字变3字节(生字4-6字节)、有效节省空间

====================================================================================

存储、传输,节省资源,但内存处理时变麻烦,解决办法:

1.存储时转换成utf-8,内存处理里转换成unicode。此过程一般会自动转化

可通过以下实现:

a.指明要保存文件的编码为utf8

b.encode(utf8)成utf8再保存

 ========================python中的编码问题=================================

1.python在内存中用unicode编码

2.decode()作用:将别的编码 变成 unicode

3.encode(utf8)作用:将unicode 变成 别的编码

4.python2中,windows下默认是gb2312;linux中默认是utf8  ?

  做项目时需要在头部先声明:

# -*-coding: utf-8 -*-

5.python3中,win下默认是utf-8,liunux默认是utf-8  ?

===================编码python实例===============================================

1.先用之前建立好的python虚拟环境创立一个python2的虚拟环境,详见:https://www.cnblogs.com/chenxi188/p/10700608.html

#建立虚拟环境
mkvirtualenv -p C:\Python\python27\python.exe py2  

#显示拥有的环境 py2
workon
 
#进入py2环境
workon py2 

试验代码:第9行报错原因:python2在wins下默认是gbk2312,encode是用来把unicode转化成别的字符的,格式不匹配所以摄错

 1 >>> s='abc'
 2 >>> su=u'abc'
 3 >>> s.encode('utf8')
 4 'abc'
 5 >>> su.encode('utf8')
 6 'abc'
 7 >>> s='你好'
 8 >>> su=u'你好'
 9 >>> s.encode('utf8')  #######################
10 Traceback (most recent call last):
11 File "<stdin>", line 1, in <module>
12 UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 0: ordinal
13 not in range(128)
14 >>> su.encode('utf8')
15 '\xe4\xbd\xa0\xe5\xa5\xbd'

正确写法:

#含义:把s(编码为gbk2312)的字符串转化成unicode,再把unicode转化为utf8
s.decode('gbk2312').encode('utf8')  

获取当前默认编码:

>>> import sys
>>> sys.getdefaultencoding()
'ascii'
此时退出虚拟环境命令变为:
#此时退出虚拟环境命令变为:
deactivate

#进入虚拟环境命令变为:
activate

 

posted @ 2019-04-18 14:59  晨光曦微  阅读(227)  评论(0编辑  收藏  举报