Python基础-字符编码

字符编码

Python 解释器在加载.py文件中的代码,会对内容进行编码(默认asciII)

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其它西欧语言,其最多只能用8位来表示(一个字节),即:2^8=256-1,所以,ASCII码最多只能表示255个符号。


ASCII


控制字符


ASCII


控制字符


ASCII


控制字符


ASCII


控制字符


0


NUT


32


(space)


64


@


96



1


SOH


33


!


65


A


97


a


2


STX


34


"


66


B


98


b


3


ETX


35


#


67


C


99


c


4


EOT


36


$


68


D


100


d


5


ENQ


37


%


69


E


101


e


6


ACK


38


&


70


F


102


f


7


BEL


39


,


71


G


103


g


8


BS


40


(


72


H


104


h


9


HT


41


)


73


I


105


i


10


LF


42


*


74


J


106


j


11


VT


43


+


75


K


107


k


12


FF


44


,


76


L


108


l


13


CR


45


-


77


M


109


m


14


SO


46


.


78


N


110


n


15


SI


47


/


79


O


111


o


16


DLE


48


0


80


P


112


p


17


DCI


49


1


81


Q


113


q


18


DC2


50


2


82


R


114


r


19


DC3


51


3


83


S


115


s


20


DC4


52


4


84


T


116


t


21


NAK


53


5


85


U


117


u


22


SYN


54


6


86


V


118


v


23


TB


55


7


87


W


119


w


24


CAN


56


8


88


X


120


x


25


EM


57


9


89


Y


121


y


26


SUB


58


:


90


Z


122


z


27


ESC


59


;


91


[


123


{


28


FS


60


<


92


/


124


|


29


GS


61


=


93


]


125


}


30


RS


62


>


94


^


126


`


31


US


63


?


95


_


127


DEL

关于中文

为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5

GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号,汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768,其中有5个空位是D7FA-D7FE。

GB2312支持的汉字太少,1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区,汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理,区分中文编码的方法是高字节的最高位不为0,按照程序员的称呼,GB2312、GBK到GB18030即属于汉字字符集(DBCS)。

有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030,不过GB18030相对GBK增加字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定所有的字符和符号最少由16位来表示(2个字节),即:2^16=65536。

注:此处说的是最少2个字节,可能更多

UTF-8,是对Unicode编码的压缩和优化,他不再是最少使用2个字符,而是将所有的字符和符号进行分类:

Ascii码中的内容用1个字节保存、欧洲的字符用2个字符保存,东亚的字符用3个字节保存...

所以,python解释器在加载.py文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:

在python2.x中:

Erro:ascii码无法表示中文

#!/usr/bin/env python

print ‘你好,世界’

应该更正为:显示的告诉python解释器,用什么编码来执行源代码,即:

# -*- coding:utf-8 -*-
#!/usr/bin/env python

print ‘你好,世界’

PS:在Python3.X中,已经默认支持中文,默认用utf-8

原文地址:https://www.cnblogs.com/dot-zhang/p/10092424.html

时间: 2024-11-05 06:30:35

Python基础-字符编码的相关文章

Python基础(字符编码与文件处理)

一.了解字符编码的知识储备 1.计算机基础知识(三副图) 2.文本编辑器存取文件的原理(notepad++,Pycharm,word) 打开编辑器就启动了一个进程,是在内存中运行的,所以在编辑器写的内容在没保存之前都是存放在内存中的,断电后数据就会丢失.因而需要保存到硬盘上,点击保存按钮,就从内存中把数据刷到硬盘上. 3.Python解释器执行py文件的与原理,例如python test.py 第一阶段:python解释器启动,此时就相当于启动了一个文本编辑器. 第二阶段:python解释器相当

Python自动化开发课堂笔记【Day03】 - Python基础(字符编码使用,文件处理,函数)

字符编码使用 1. 文本编辑器如何存取文件 文本编辑器相当一个运行在内存中的进程,所以文件内容在编辑未存储时都是在内存中的,尚未存储在硬盘之中,在没有保存之前,所编辑的任何文本都只是一堆字符,没有任何逻辑上的意义,当存储文件的时候需要以一定的编码格式存储于硬盘之中,当进行文件读取的时候也需要以同样的编码格式进行读取到内存之中进行操作,如果存储文件的编码和读取文件的编码不一致则会引起读取过程中的乱码导致文件操作失败. P.S. --> Python解释器执行py文件的原理. Step1. Pyth

python基础 字符编码转换

python2 1 #python2上所有的字符编码都需要先decode到unicode,再从unicode encode到目标编码 2 str_utf8 = "我就是我" 3 print("str_utf-8:我就是我:",str_utf8) 4 #将utf-8转换为unicode 5 str_utf8_to_unicode = str_utf8.decode("utf-8") 6 print(str_utf8_to_unicode) 7 #将

Python全栈开发之Python基础-字符编码与转码

详细文章: http://www.cnblogs.com/yuanchenqi/articles/5956943.html http://www.diveintopython3.net/strings.html 需知: 1.在python2默认编码是ASCII, python3里默认是utf-8 2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-8就是unicode 3.在py3中encode,在转码的同时还会把str

python基础之编码问题

python基础之编码问题 本节内容 字符串编码问题由来 字符串编码解决方案 1.字符串编码问题由来 由于字符串编码是从ascii--->unicode--->utf-8(utf-16和utf-32等)演变过来的,再加上类似于中国的gbk编码等,这些编码互相之间并不兼容,所以编写的软件实现跨语言平台运行就会出现字符乱码问题... 须知内容如下: 在python2默认编码是ASCII, python3里默认是utf-8(文件编码默认是utf-8,字符串编码默认是unicode) unicode

python 处理字符编码问题

今天好不容易重新开始写Python做实验,结果被字符编码虐的体无完肤.其实之前就已经比较清楚python处理字符编码的套路,但是今天白天反复的出现can't encode/decode ..., the original code not in 178之类的提示,甚是无力,后来偶尔使用了一下sys.setdefaultencoding('utf8')就解决了全部问题,真是不解. 下面还是总结一下Python几个编码设置的含义吧. 1. #coding=utf8 这种形式的注释告诉解释器,应该以c

Python常见字符编码间的转换

学习Python,字符编码间的转换是绕不过去的一只拦路虎,不把编码彻底搞明白,总有一天它会猝不及防坑你一把. Python2.x和Python3.x在字符编码的设置上也有很大区别(Python3未来将是主流,所以Python3为主),今天我们就来一起学习下. 上一篇文章里我已经简述了Python的常见编码了,这里就不再赘述了,还不清楚的小伙伴可以先去看下:     http://www.cnblogs.com/schut/p/8406897.html 一.Unicode 和 UTF-8的纠葛 U

Python:字符编码详解

相关文章 Python中文编码问题:为何在控制台下输出中文会乱码及其原理 1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节

第六节,初识python和字符编码

程序语言的发展 机器语言 程序语言,最初的计算机语言是机器语言,完全是0和1组成的二进制串  如:01010101 11010101 汇编语言 因为01010101的字符串,冗长,不利于维护,所以产生了带助记符的汇编语言 举例:fua = 01010101    fub = 11010101 c语言 在汇编的基础上开发了c语言 有了常量,变量,字符串,等运算规则 java.c#.php.python 在c语言的基础长有发展了java.c#.php.python 等各种语言 这些语言都需要安装运行