ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

笨办法学python3代码练习ex23.py 字符串字节串字符编码

2020-07-22 12:00:43  阅读:348  来源: 互联网

标签:errors 笨办法 字节 符号 py encoding ex23 10xxxxxx Unicode


    首先简单说一下字符编码的问题。平常遇到比较多的就是ASCII码(全称:美国信息交换标准码)。ASCII码使用一个字节(8位)来表示一些常见的数字、英文字母以及一些控制字符。英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如中文汉字就无法用ASCII来表示和编码。为了对世界上的各种语言符号进行统一的编码,于是发明了Unicode。Unicode将世界上所有的文字符号都纳入其中。每一个符号都给予一个独一无二的编码,这就是Unicode。就像它的名字都表示的,这是一种所有符号的编码。需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

    Unicode的问题:

  • 第一个问题是,如何才能区别Unicode和ASCII?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?
  • 第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果Unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。 

 

    UTF-8:互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。

UTF-8的编码规则很简单,只有二条:

  • 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的Unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
  • 对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的Unicode码。

举例如下:

1字节 0xxxxxxx 
2字节 110xxxxx 10xxxxxx 
3字节 1110xxxx 10xxxxxx 10xxxxxx 
4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 
5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 
6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 

 

ex23.py

 1 import sys 
 2 scripts, encoding, error = sys.argv
 3     
 4     
 5 def main(language_file, encoding, errors):          #自己定义main函数
 6     line = language_file.readline()
 7     if line:
 8         print_line(line,encoding,errors)            #函数定义在下面
 9         return main(language_file,encoding,errors)
10         
11 def  print_line(line, encoding, errors):
12     next_lang = line.strip()                        #去除字符串开头和结尾指定的字符
13     raw_bytes = next_lang.encode(encoding, errors = errors)
14     cooked_string = raw_bytes.decode(encoding, errors = errors)
15     
16     print(raw_bytes, "<===>", cooked_string)        
17 
18 
19 #打开文件,同时指定文件的编码方式
20 languages  = open("languages.txt", encoding = "utf-8")
21 
22 #调用自己定义main函数
23 main(languages, encoding, error)

做这个练习需要下载一个languages.txt文件。可以百度下载,页可以直接用百度网盘下载。链接:https://pan.baidu.com/s/1_f2-sLYAwZA8xy6zTedDWg   提取码:9tgy

执行代码方式: python ex23.py  utf-8  strict                        

最后说明一下: 本人使用的是win7 64位旗舰版系统,支持utf-8编码方式。



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:errors,笨办法,字节,符号,py,encoding,ex23,10xxxxxx,Unicode
来源: https://www.cnblogs.com/lsc666js/p/13359875.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有