编码python |
大小linux |
支持语言编程 |
ASCII小程序 |
1个字节(byte)=8bit=2位16进制数,表示127个字符windows |
英文浏览器 |
Unicode服务器 |
用至多2个字节表示65535个字符。(16bit=2byte)之间的数字来表示全部字符 (python3在内存中的编码方式)网络 |
全部语言编程语言 |
Unicode2函数 |
用至多4个字节表示全部字符 |
|
UTF-8 |
1-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节(外存或网络通讯中的编码方式) |
全部语言 |
标准ASCII 码,使用7 位二进制数(第1位二进制为0)来表示全部的大写和小写字母,数字0 到九、标点符号,以及在美式英语中使用的特殊控制字符。
最先只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,好比大写字母A的编码是65,小写字母z的编码是122。
要处理中文显然一个字节是不够的,至少须要两个字节,并且还不能和ASCII编码冲突,因此,中国制定了GB2312编码,用来把中文编进去。
全世界有上百种语言,Unicode把全部语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode标准也在不断发展,但最经常使用的是用1-2个字节表示一个字符(若是要用到很是偏僻的字符,就须要4个字节)。现代操做系统和大多数编程语言都直接支持Unicode。
unicode的第一个版本是用两个字节(16bit)来表示全部字符。实际上这么说容易让人产生歧义,咱们总以为两个字节就表明保存在计算机中时是两个字节。因而任何字符若是用unicode表示的话保存下来都占两个字节.其实这种说法是错误的.
其实Unicode涉及到两个步骤,首先是定义一个规范,给全部的字符指定一个惟一对应的数字,这彻底是表示问题,能够跟计算机没半毛钱关系.第二步才是怎么把字符对应的数字保存在计算机中,这才涉及到实际在计算机中占多少字节空间。
Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
因此咱们也能够这样理解,Unicode是用0至65535之间的数字来表示全部字符.其中0至127这128个数字表示的字符仍然跟ASCII彻底同样.unicode兼容了ascii,即若是是英文的,前8位就是0,后8位就是ascii;若是前8位有值,就是中文编码。例如,65536是2的16次方.这是第一步.第二步就是怎么把0至65535这些数字转化成01串保存到计算机中。这确定就有不一样的保存方式了。因而出现了UTF(unicode transformation format),有UTF-8,UTF-16等存储方式。
综上,python字符串,在运行时,在内存中保存为Unicode数据,2个字节做为一个字,但保存.py文件到磁盘、网络中,会编码为utf-8等格式,它们以字节码(字节串bytes)的形式保存在介质上。而想从网络或磁盘中读取数据,就是要把utf-8或其余编码从字节码(字节串bytes)解码为unicode字符串。
python3中的字符串与python2中的u'字符串',都是unicode,只能encode,因此不管如何打印都不会乱码,由于能够理解为从内存打印到内存,即内存->内存,unicode->unicode
另外,文件(如txt)的保存又是另外一种状况,在windows平台下使用python内置函数 open() 时发现,当不传递encoding参数时,会自动采用gbk(cp936)解码打开文件(linux默认会采用utf-8解码),而当下很大部分软件的编码方式都是UTF-8,因此打开会报错。
微软发布系统因为没有使用unicode编码,因此windows要发布中文版,日本版,德国版...而苹果用的是unicode,只须要一套系统,直接改编码便可。
在计算机内存中,统一使用Unicode编码,当须要保存到硬盘或者须要传输的时候,再转换为UTF-8编码。
Linux系统,用记事本编辑的时候,从文件读取的UTF-8字符被解码为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode编码为UTF-8保存到文件:
浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器:
UTF-8是Unicode的实现方式之一。UTF-8 是一种 Unicode 的编码方式,主要做用对 Unicode 码的数据进行转换,转换后方便存储和网络传输。本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码(unicode transformation format)。UTF-8编码把一个Unicode字符根据不一样的数字大小编码成1-6个字节,经常使用的英文字母被编码成1个字节,汉字一般是3个字节,只有很生僻的字符才会被编码成4-6个字节。若是你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。
UTF-8编码有一个额外的好处,就是ASCII编码实际上能够被当作是UTF-8编码的一部分,因此,大量只支持ASCII编码的历史遗留软件能够在UTF-8编码下继续工做。
8不是指一个字节,难道一个字节表示一个字符?实际上不是.当用UTF-8时表示一个字符是可变的,有多是用一个字节表示一个字符,也多是两个,三个..反正是根据字符对应的数字大小来肯定。
用UTF-8表示"汉"
Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
用UTF-8就有复杂点.由于此时程序是把一个字节一个字节的来读取,而后再根据字节中开头的bit标志来识别是该把1个仍是两个或三个字节作为一个单元来处理.
0xxxxxxx,若是是这样的01串,也就是以0开头后面是啥就不用管了XX表明任意bit.就表示把一个字节作为一个单元.就跟ASCII彻底同样.
110xxxxx 10xxxxxx.若是是这样的格式,则把两个字节当一个单元
1110xxxx 10xxxxxx 10xxxxxx 若是是这种格式则是三个字节当一个单元.(汉子一般在这个区域)
这是约定的规则.你用UTF-8来表示时必须遵照这样的规则。咱们知道UTF-16不须要用啥字符来作标志,因此两字节也就是2的16次能表示65536个字符.
而UTF-8因为里面有额外的标志信息,全部一个字节只能表示2的7次方128个字符,两个字节只能表示2的11次方2048个字符.而三个字节能表示2的16次方,65536个字符。
因为"汉"的编码6C49(27721)大于2048了全部两个字节还不够,只能用三个字节来表示。所以要用1110xxxx 10xxxxxx 10xxxxxx这种格式.把27721对应的二进制从左到右填充XXX符号.
由上面咱们能够看出UTF-8在局部的字节错误(丢失、增长、改变)不会致使连锁性的错误,由于 UTF-8 的字符边界很容易检测出来,因此容错性较高。
UTF-16比较好理解,就是任何字符对应的数字都用两个字节来保存。咱们一般对Unicode的误解就是把Unicode与UTF-16等同了。可是很显然若是都是英文字母这作有点浪费.明明用一个字节能表示一个字符为啥整两个啊。
因而UTF-8和UTF-16的优劣很容易就看出来了。若是所有英文或英文与其余文字混合,但英文占绝大部分,用UTF-8就比UTF-16节省了不少空间.而若是所有是中文这样相似的字符或者混合字符中中文占绝大多数.UTF-16就占优点了。
你可能会问当用程序打开一个文件时咱们怎么知道那是用的UTF-8仍是UTF-16啊.天然会有点啥标志,在文件的开头几个字节就是标志。
EF BB BF 表示UTF-8
FE FF 表示UTF-16.
例如,中文字"汉"对应的unicode是6C49(27721)
用UTF-16表示的话就是01101100 01001001(共16 bit,两个字节)
"严"的Unicode码是4E25,UTF-8编码是E4B8A5,二者是不同的。它们之间的转换能够经过程序实现。
在Windows平台下,有一个最简单的转化方法,就是使用内置的记事本小程序Notepad.exe。打开文件后,点击"文件"菜单中的"另存为"命令,会跳出一个对话框,在最底部有一个"编码"的下拉条。
里面有四个选项:ANSI,Unicode,Unicode big endian 和 UTF-8。
1)ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对Windows简体中文版,若是是繁体中文版会采用Big5码)。
2)Unicode编码指的是UCS-2编码方式,即直接用两个字节存入字符的Unicode码。这个选项用的little endian格式。
3)Unicode big endian编码与上一个选项相对应。
4)UTF-8编码,也就是上一节谈到的编码方法。
选择完"编码方式"后,点击"保存"按钮,文件的编码方式就马上转换好了。
前面说的都是unicode的第一个版本.但65536显然不算太多的数字,用它来表示经常使用的字符是没一点问题.足够了,但若是加上不少特殊的就也不够了.因而从1996年开始又来了第二个版本.用四个字节表示全部字符.这样就出现了UTF-8,UTF16,UTF-32.原理和以前确定是彻底同样的,UTF-32就是把全部的字符都用32bit也就是4个字节来表示.而后UTF-8,UTF-16就视状况而定了。UTF-8能够选择1至8个字节中的任一个来表示.而UTF-16只能是选两字节或四字节.
前面说了要知道具体是哪一种编码方式,须要判断文本开头的标志。
填充方式能够不同,因而就出现了Big-Endian,Little-Endian的术语.Big-Endian就是从左到右,Little-Endian是从右到左。
EF BB BF UTF-8
FE FF UTF-16/UCS-2, little endian
FF FE UTF-16/UCS-2, big endian
FF FE 00 00 UTF-32/UCS-4, little endian.
00 00 FE FF UTF-32/UCS-4, big-endian.
Unicode码能够采用UCS-2格式直接存储。以汉字"严"为例,Unicode码是4E25,须要用两个字节存储,一个字节是4E,另外一个字节是25。存储的时候,4E在前,25在后,就是Big endian方式;25在前,4E在后,就是Little endian方式。
那么很天然的,就会出现一个问题:计算机怎么知道某一个文件到底采用哪种方式编码?
Unicode规范中定义,每个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫作"零宽度非换行空格"(ZERO WIDTH NO-BREAK SPACE),用FEFF表示。这正好是两个字节,并且FF比FE大1。若是一个文本文件的头两个字节是FE FF,就表示该文件采用大头方式;若是头两个字节是FF FE,就表示该文件采用小头方式。
下面,举一个实例。
打开"记事本"程序Notepad.exe,新建一个文本文件,内容就是一个"严"字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8编码方式保存。
而后,用文本编辑软件UltraEdit中的"十六进制功能",观察该文件的内部编码方式。
1)ANSI:文件的编码就是两个字节"D1 CF",这正是"严"的GB2312编码,这也暗示GB2312是采用大头方式存储的。
2)Unicode:编码是四个字节"FF FE 25 4E",其中"FF FE"代表是小头方式存储,真正的编码是4E25。
3)Unicode big endian:编码是四个字节"FE FF 4E 25",其中"FE FF"代表是大头方式存储。
4)UTF-8:编码是六个字节"EF BB BF E4 B8 A5",前三个字节"EF BB BF"表示这是UTF-8编码,后三个"E4B8A5"就是"严"的具体编码,它的存储顺序与编码顺序是一致的
UTF-16 并非一个完美的选择,它存在几个方面的问题:
目前支撑咱们继续使用 UTF-16 的理由主要是考虑到它是双字节的,在计算字符串长度、执行索引操做时速度很快。固然这些优势 UTF-32 都具备,但不少人毕竟仍是以为 UTF-32 太占空间了。
反过来 UTF-8 也不完美,也存在一些问题:
当然,UTF-8 的优势也不能忘了:
1个汉字是多少个字节?
答: GBK(2个字节--windows)/ UTF-8(3个字节--linux)
GBK是ASCII的扩展集,ASCII使用一个字节,即8个二进制位,来表征英文字母和一些符号,一个字节能够最多表示2的8次方即256个字符。前127个被称为ASCII字符集,后续在ASCII的基础上进行扩展,将剩余的127个用来表征汉字,但汉字太多,因此不得不在必要时使用2个字符来表示更多的汉字,被称为GB2312字符集,后来仍然不够,又进一步扩展成GBK字符集。因此在此字符集中,英文占一个字节,汉字则占两个字节。
经常使用编码:中国大陆只有2种
国标系列: GB18030(GBK(GB2312))(windows经常使用)
例如,在windows里建一个txt文件,文件里写10个汉字,文件是20字节,由于是gbk格式保存的。
国际标准: UNICODE (2或4字节,全部国家编码不会冲突)<---> UTF-8 (Linux / Mac OS X / IOS / Android等经常使用)
例如,在linux里建一个txt文件,文件里写10个汉字,文件是30字节,由于是utf-8
功能:
ord(str) 返回一个字符的unicode编码
chr(unicode) 返回unicode对应的字符
>>> ord("发挥好")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ord() expected a character, but string of length 3 found
出错缘由:一次只能查询一个字符的unicode编码
>>> ord("f")
102
>>> chr(102)
'f'
>>> ord("折")
25240
>>> chr(25240)
'折'
>>> ord('中')
20013
>>> ord('\u4e2d') --python3.0支持嵌入unicode,这是“中”的unicode
20013
\u 后面通常跟4位16进制,表示2字节的unicode
\x 后跟2位16进制数,能够表示1字节的unicode(包括ASCII的所有内 容,也包括非ASCII的一些1字节的unicode)
b 表示原始字节值。前面加b表明使用ASCII字符集建立bytes字节串,只能建立ASCII字符集中存在的字符,中文字符前加b会报错(由于最大只能存一字节数据8位二进制数)。里面\x后跟2位16进制数,表示1字节,只能存ascii码。若是能显示这个字符,则显示这个字符。
Str: 能处理Unicode
>>> '\xEE'
'î'
>>> '\x41'
'A'
>>> '\xffff'
'ÿff' --只把前2位当作16进制的unicode编码,其余按unicode表示的字符原样输出。
>>> '\x01c'
'\x01c' --01的ascii和unicode码不是字符,则按普通字节原样输出
>>> '\u4f60'
'你'
>>> '\u4f609090'
--只把前4位当作16进制的unicode编码,其余按unicode表示的字符原样输出。
'你9090'
>>> '\U00000041'
'A'
>>> b'abc'
b'abc'
>>> b'\xff22'
b'\xff22' --字节串 \xff若不是ascii码,会原样输出。
>>> b'\x30'
b'0' --字节串 能显示为ASCII码会显示对应的字符
>>> b'5'
b'5'
>>> b'我'
File "<stdin>", line 1
SyntaxError: bytes can only contain ASCII literal characters.
-- 只能存一个个字节,不能超过1字节
Python程序在运行过程当中,字符串在内存中,只容许以unicode16/32编码存储。
外部文件(硬盘中)中能够有gbk,gb1312,gb18030,ascii,utf-8(字节串),但一旦造成python字符串,在python程序里运行时,必定是unicode全世界统一编码,即从外部编码获取最终的unicode值。
从内部字符串(内存)转到gbk,gb1312,gb18030,ascii,utf-8外部编码(即存到外存里),必须先编码S.encode(‘gbk’)。encode()函数能够将字符串转换为对应字符集的bytes(字节串)
>>> str='abc'
>>> str.decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'decode'
以上出错的缘由:
Python字符串在内存中是unicode,不须要再解码成unicode了。
Print(str) 函数: 根据unicode打印字符串。若是str不是unicode,而是utf-8要解码为unicode才能打印出想要的样子,直接打印会打印成字节串bytes。
从外部编码(硬盘)转到内部字符串(python解释器、内存)用解码B.decode(‘gbk’)
例如:str ---> bytes 字符串编码成为字节串
b = s.encode(encoding='utf-8')
bytes---> str 字节串解码成为字符串
s = b.decode(encoding='utf-8')
>>> u = '中文' # 指定字符串类型对象u
>>> str1 = u.encode('gb2312')
# 以gb2312编码对u进行编码,得到bytes字节串类型对象
>>> print(str1)
b'\xd6\xd0\xce\xc4' #打印字节码
>>> str2 = u.encode('gbk')
# 以gbk编码对u进行编码,得到bytes字节串类型对象
>>> print(str2)
b'\xd6\xd0\xce\xc4'
>>> str3 = u.encode('utf-8')
# 以utf-8编码对u进行编码,得到bytes字节串类型对象
>>> print(str3)
b'\xe4\xb8\xad\xe6\x96\x87'
>>> u1 = str1.decode('gb2312') # 以gb2312编码对字节串str1进行解码,得到unicode类型对象
>>> print('u1')
'中文'
>>> u2 = str1.decode('utf-8') # 报错,由于str1是gb2312编码的
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte
>>> 'x'+b'y'.decode()
'xy'
>>> 'x'.encode()+b'y'
b'xy'
编码注释的功能:告诉python解释器,这个脚本用什么编码来解码
在源文件的第一行或第二行写入以下内容:
# -*- coding:gbk -*-
# 设置源文件编码格式为:gbk
或
# -*- coding:utf-8 -*-
# 设置源文件编码格式为:UTF-8
世界上存在着多种编码方式,同一个二进制数字能够被解释成不一样的符号。所以,要想打开一个文本文件,就必须知道它的编码方式,不然用错误的编码方式解码,就会出现乱码。
注意:不写编码注释的话。在windows下写的代码(按gbk编码)在linux下不能执行,由于linux会把这些gbk当作utf-8(Linux默认把中文当作utf-8),尝试按utf-8的格式把这些代码解码为unicode,在此过程当中会出错。若是写了编码注释,linux会按gbk的格式将其解码为unicode字符串,在python环境运行打印。
实验:
Windows下编辑python文本文件,文件保存为gbk格式。
C:\code\studybook_3>python zs.py
File "zs.py", line 1
SyntaxError: Non-UTF-8 code starting with '\xb9' in file zs.py on line 1, b
encoding declared; see http://python.org/dev/peps/pep-0263/ for details
报错缘由:python解释器默认使用utf-8解码文件,而文件是用gbk编码的。
下面加上编码注释:
执行成功,编码注释告诉python解释器,要用gbk把文件解码为unicode字符串,再内存中打印。在Linux中也能正常打印。
Windows下编辑python文本文件,文件保存为utf-8格式。
运行正常,python解释器默认使用utf-8解码文件,而文件是用utf-8编码的,故能够正常解码为unicode。Linux同理。
Windows下,系统默认用gbk\utf-8解码文件。
Linux下,系统默认用utf-8解码文件。
s='小甲'
with open("gbk2222.txt","w",encoding = "gbk") as f:
f.write(s)
Win下,以上代码生成gbk编码格式文件gbk2222.txt,用记事本自动用gbk解码,能打开;Linux下,系统默认用utf-8解码则不能打开。
s='小甲'
with open("utf2222.txt","w",encoding = "utf-8") as f:
f.write(s)
Win下,以上代码生成utf-8编码格式文件utf2222.txt,用记事本自动用utf-8解码,能打开;Linux下,系统默认用utf-8解码也能打开。
with open("what","w") as f:
f.write(s)
Win下,不指定编码格式,生成文件what。
用记事本打开,发现文件默认保存为本地编码,即window保存为gbk编码;linux保存为utf-8编码。
在windows下执行如下操做:
>>> import sys,locale
>>> sys.getdefaultencoding()
'utf-8'
>>> locale.getdefaultlocale()
('zh_CN', 'cp936')
以上说明,python内存默认采用utf-8 对.py文件进行解码。
Window默认采用cp926对文本文件进行解码。
在linux下执行如下操做:
>>> import sys,locale
>>> sys.getdefaultencoding()
'utf-8'
>>> locale.getdefaultlocale()
('zh_CN', 'UTF-8')
以上说明,python内存默认采用utf-8 对.py文件进行解码。
linux默认采用UTF-8对文本文件进行解码。
(1)Windows记事本下建文本文件,输入汉字“中” ,
默认保存为ANSI 编码文本,即GBK,2字节。
在windows记事本中显示正确,在linux打开乱码。由于linux是按utf-8解码打开文本文件的。
不一样的国家和地区制定了不一样的标准,由此产生了 GB23十二、GBK、GB18030、Big五、Shift_JIS 等各自的编码标准。这些使用多个字节来表明一个字符的各类汉字延伸编码方式,称为 ANSI 编码。在简体中文Windows操做系统中,ANSI 编码表明 GBK 编码;在繁体中文Windows操做系统中,ANSI编码表明Big5;在日文Windows操做系统中,ANSI 编码表明 Shift_JIS 编码。
(2)Windows记事本下建文本文件,输入汉字“中”,
默认保存为utf-8编码文本,6字节。
在windows记事本中显示正确,在linux打开,系统会按unicode解码后正常显示。
(3)linux下建文本文件,输入汉字“中”,
默认保存为utf-8编码文本,4字节。
Windows记事本显示正常,win会按utf-8解码后读取unicode.
Windows记事本写以下文件,用utf-8保存
运行后:
Python解释器内部,使用utf-8解码文件为unicode,而后打印。
文件utf1写入磁盘是utf-8编码 在win能打开,在linux能打开;
文件gbk1写入磁盘是gbk编码 在win能打开,在linux不能打开(linux只能用utf-8解码);
文件jis1写入磁盘是jis编码 在win不能打开,在linux不能打开;
Bin (二进制) |
Oct (八进制) |
Dec (十进制) |
Hex (十六进制) |
缩写/字符 |
解释 |
0000 0000 |
00 |
0 |
0x00 |
NUL(null) |
空字符 |
0000 0001 |
01 |
1 |
0x01 |
SOH(start of headline) |
标题开始 |
0000 0010 |
02 |
2 |
0x02 |
STX (start of text) |
正文开始 |
0000 0011 |
03 |
3 |
0x03 |
ETX (end of text) |
正文结束 |
0000 0100 |
04 |
4 |
0x04 |
EOT (end of transmission) |
传输结束 |
0000 0101 |
05 |
5 |
0x05 |
ENQ (enquiry) |
请求 |
0000 0110 |
06 |
6 |
0x06 |
ACK (acknowledge) |
收到通知 |
0000 0111 |
07 |
7 |
0x07 |
BEL (bell) |
响铃 |
0000 1000 |
010 |
8 |
0x08 |
BS (backspace) |
退格 |
0000 1001 |
011 |
9 |
0x09 |
HT (horizontal tab) |
水平制表符 |
0000 1010 |
012 |
10 |
0x0A |
LF (NL line feed, new line) |
换行键 |
0000 1011 |
013 |
11 |
0x0B |
VT (vertical tab) |
垂直制表符 |
0000 1100 |
014 |
12 |
0x0C |
FF (NP form feed, new page) |
换页键 |
0000 1101 |
015 |
13 |
0x0D |
CR (carriage return) |
回车键 |
0000 1110 |
016 |
14 |
0x0E |
SO (shift out) |
不用切换 |
0000 1111 |
017 |
15 |
0x0F |
SI (shift in) |
启用切换 |
0001 0000 |
020 |
16 |
0x10 |
DLE (data link escape) |
数据链路转义 |
0001 0001 |
021 |
17 |
0x11 |
DC1 (device control 1) |
设备控制1 |
0001 0010 |
022 |
18 |
0x12 |
DC2 (device control 2) |
设备控制2 |
0001 0011 |
023 |
19 |
0x13 |
DC3 (device control 3) |
设备控制3 |
0001 0100 |
024 |
20 |
0x14 |
DC4 (device control 4) |
设备控制4 |
0001 0101 |
025 |
21 |
0x15 |
NAK (negative acknowledge) |
拒绝接收 |
0001 0110 |
026 |
22 |
0x16 |
SYN (synchronous idle) |
同步空闲 |
0001 0111 |
027 |
23 |
0x17 |
ETB (end of trans. block) |
结束传输块 |
0001 1000 |
030 |
24 |
0x18 |
CAN (cancel) |
取消 |
0001 1001 |
031 |
25 |
0x19 |
EM (end of medium) |
媒介结束 |
0001 1010 |
032 |
26 |
0x1A |
SUB (substitute) |
代替 |
0001 1011 |
033 |
27 |
0x1B |
ESC (escape) |
换码(溢出) |
0001 1100 |
034 |
28 |
0x1C |
FS (file separator) |
文件分隔符 |
0001 1101 |
035 |
29 |
0x1D |
GS (group separator) |
分组符 |
0001 1110 |
036 |
30 |
0x1E |
RS (record separator) |
记录分隔符 |
0001 1111 |
037 |
31 |
0x1F |
US (unit separator) |
单元分隔符 |
0010 0000 |
040 |
32 |
0x20 |
(space) |
空格 |
0010 0001 |
041 |
33 |
0x21 |
! |
叹号 |
0010 0010 |
042 |
34 |
0x22 |
" |
双引号 |
0010 0011 |
043 |
35 |
0x23 |
# |
井号 |
0010 0100 |
044 |
36 |
0x24 |
$ |
美圆符 |
0010 0101 |
045 |
37 |
0x25 |
% |
百分号 |
0010 0110 |
046 |
38 |
0x26 |
& |
和号 |
0010 0111 |
047 |
39 |
0x27 |
' |
闭单引号 |
0010 1000 |
050 |
40 |
0x28 |
( |
开括号 |
0010 1001 |
051 |
41 |
0x29 |
) |
闭括号 |
0010 1010 |
052 |
42 |
0x2A |
* |
星号 |
0010 1011 |
053 |
43 |
0x2B |
+ |
加号 |
0010 1100 |
054 |
44 |
0x2C |
, |
逗号 |
0010 1101 |
055 |
45 |
0x2D |
- |
减号/破折号 |
0010 1110 |
056 |
46 |
0x2E |
. |
句号 |
0010 1111 |
057 |
47 |
0x2F |
/ |
斜杠 |
0011 0000 |
060 |
48 |
0x30 |
0 |
字符0 |
0011 0001 |
061 |
49 |
0x31 |
1 |
字符1 |
0011 0010 |
062 |
50 |
0x32 |
2 |
字符2 |
0011 0011 |
063 |
51 |
0x33 |
3 |
字符3 |
0011 0100 |
064 |
52 |
0x34 |
4 |
字符4 |
0011 0101 |
065 |
53 |
0x35 |
5 |
字符5 |
0011 0110 |
066 |
54 |
0x36 |
6 |
字符6 |
0011 0111 |
067 |
55 |
0x37 |
7 |
字符7 |
0011 1000 |
070 |
56 |
0x38 |
8 |
字符8 |
0011 1001 |
071 |
57 |
0x39 |
9 |
字符9 |
0011 1010 |
072 |
58 |
0x3A |
: |
冒号 |
0011 1011 |
073 |
59 |
0x3B |
; |
分号 |
0011 1100 |
074 |
60 |
0x3C |
< |
小于 |
0011 1101 |
075 |
61 |
0x3D |
= |
等号 |
0011 1110 |
076 |
62 |
0x3E |
> |
大于 |
0011 1111 |
077 |
63 |
0x3F |
? |
问号 |
0100 0000 |
0100 |
64 |
0x40 |
@ |
电子邮件符号 |
0100 0001 |
0101 |
65 |
0x41 |
A |
大写字母A |
0100 0010 |
0102 |
66 |
0x42 |
B |
大写字母B |
0100 0011 |
0103 |
67 |
0x43 |
C |
大写字母C |
0100 0100 |
0104 |
68 |
0x44 |
D |
大写字母D |
0100 0101 |
0105 |
69 |
0x45 |
E |
大写字母E |
0100 0110 |
0106 |
70 |
0x46 |
F |
大写字母F |
0100 0111 |
0107 |
71 |
0x47 |
G |
大写字母G |
0100 1000 |
0110 |
72 |
0x48 |
H |
大写字母H |
0100 1001 |
0111 |
73 |
0x49 |
I |
大写字母I |
01001010 |
0112 |
74 |
0x4A |
J |
大写字母J |
0100 1011 |
0113 |
75 |
0x4B |
K |
大写字母K |
0100 1100 |
0114 |
76 |
0x4C |
L |
大写字母L |
0100 1101 |
0115 |
77 |
0x4D |
M |
大写字母M |
0100 1110 |
0116 |
78 |
0x4E |
N |
大写字母N |
0100 1111 |
0117 |
79 |
0x4F |
O |
大写字母O |
0101 0000 |
0120 |
80 |
0x50 |
P |
大写字母P |
0101 0001 |
0121 |
81 |
0x51 |
Q |
大写字母Q |
0101 0010 |
0122 |
82 |
0x52 |
R |
大写字母R |
0101 0011 |
0123 |
83 |
0x53 |
S |
大写字母S |
0101 0100 |
0124 |
84 |
0x54 |
T |
大写字母T |
0101 0101 |
0125 |
85 |
0x55 |
U |
大写字母U |
0101 0110 |
0126 |
86 |
0x56 |
V |
大写字母V |
0101 0111 |
0127 |
87 |
0x57 |
W |
大写字母W |
0101 1000 |
0130 |
88 |
0x58 |
X |
大写字母X |
0101 1001 |
0131 |
89 |
0x59 |
Y |
大写字母Y |
0101 1010 |
0132 |
90 |
0x5A |
Z |
大写字母Z |
0101 1011 |
0133 |
91 |
0x5B |
[ |
开方括号 |
0101 1100 |
0134 |
92 |
0x5C |
\ |
反斜杠 |
0101 1101 |
0135 |
93 |
0x5D |
] |
闭方括号 |
0101 1110 |
0136 |
94 |
0x5E |
^ |
脱字符 |
0101 1111 |
0137 |
95 |
0x5F |
_ |
下划线 |
0110 0000 |
0140 |
96 |
0x60 |
` |
开单引号 |
0110 0001 |
0141 |
97 |
0x61 |
a |
小写字母a |
0110 0010 |
0142 |
98 |
0x62 |
b |
小写字母b |
0110 0011 |
0143 |
99 |
0x63 |
c |
小写字母c |
0110 0100 |
0144 |
100 |
0x64 |
d |
小写字母d |
0110 0101 |
0145 |
101 |
0x65 |
e |
小写字母e |
0110 0110 |
0146 |
102 |
0x66 |
f |
小写字母f |
0110 0111 |
0147 |
103 |
0x67 |
g |
小写字母g |
0110 1000 |
0150 |
104 |
0x68 |
h |
小写字母h |
0110 1001 |
0151 |
105 |
0x69 |
i |
小写字母i |
0110 1010 |
0152 |
106 |
0x6A |
j |
小写字母j |
0110 1011 |
0153 |
107 |
0x6B |
k |
小写字母k |
0110 1100 |
0154 |
108 |
0x6C |
l |
小写字母l |
0110 1101 |
0155 |
109 |
0x6D |
m |
小写字母m |
0110 1110 |
0156 |
110 |
0x6E |
n |
小写字母n |
0110 1111 |
0157 |
111 |
0x6F |
o |
小写字母o |
0111 0000 |
0160 |
112 |
0x70 |
p |
小写字母p |
0111 0001 |
0161 |
113 |
0x71 |
q |
小写字母q |
0111 0010 |
0162 |
114 |
0x72 |
r |
小写字母r |
0111 0011 |
0163 |
115 |
0x73 |
s |
小写字母s |
0111 0100 |
0164 |
116 |
0x74 |
t |
小写字母t |
0111 0101 |
0165 |
117 |
0x75 |
u |
小写字母u |
0111 0110 |
0166 |
118 |
0x76 |
v |
小写字母v |
0111 0111 |
0167 |
119 |
0x77 |
w |
小写字母w |
0111 1000 |
0170 |
120 |
0x78 |
x |
小写字母x |
0111 1001 |
0171 |
121 |
0x79 |
y |
小写字母y |
0111 1010 |
0172 |
122 |
0x7A |
z |
小写字母z |
0111 1011 |
0173 |
123 |
0x7B |
{ |
开花括号 |
0111 1100 |
0174 |
124 |
0x7C |
| |
垂线 |
0111 1101 |
0175 |
125 |
0x7D |
} |
闭花括号 |
0111 1110 |
0176 |
126 |
0x7E |
~ |
波浪号 |
0111 1111 |
0177 |
127 |
0x7F |
DEL (delete) |
删除 |