python以某种编码进行打印_python字符串编码.pdfVIP

  • 5
  • 0
  • 约6.66千字
  • 约 4页
  • 2023-07-10 发布于上海
  • 举报

python以某种编码进行打印_python字符串编码.pdf

python以某种编码进⾏打印_python字符串编码 python默认编码 python 2.x默认的字符编码是ASCII,默认的⽂件编码也是ASCII。 python 3.x默认的字符编码是unicode,默认的⽂件编码是utf-8。 中⽂乱码问题 ⽆论以什么编码在内存⾥显⽰字符,存到硬盘上都是⼆进制,所以编码不对,程序就会出错。 常见编码有ascii编码(美国),GBK编码(中国),shift_JIS编码(⽇本),unicode(统⼀编码)等。 需要注意的是,存到硬盘上时是以何种编码存的,再从硬盘上读出来时,就必须以何种编码读,要不然就会出现乱码问题。 常见的编码错误的原因有如下,出现乱码时,按照编码之前的关系,挨个排错就能解决问题。 python解释器的默认编码; Terminal使⽤的编码; python源⽂件⽂件编码; 操作系统的语⾔设置。 Python⽀持中⽂的编码:utf-8、gbk和gb2312。uft-8为国际通⽤,常⽤有数据库、编写代码。gbk如windows的cmd使⽤。 编码转换 如果想要中国的软件可以正常的在美国⼈的电脑上实现,有下⾯两种⽅法 : 让美国⼈的电脑都装上gbk编码 让你的软件编码以utf-8编码 第⼀种⽅法不可现实,第⼆种⽅法⽐较简单,但是也只能针对新开发的软件,如果之前开发的软件就是以gbk的编码写的,上百万⾏代码已 经写出去了,重新编码成utf-8格式也会费很⼤⼒⽓。 所以,针对已经⽤gbk开发的软件项⽬如何进⾏编码转换,利⽤unicode的⼀个包含了跟全球所有国家编码映射关系的功能,就可以实现编 码转换。⽆论以什么编码存储的数据,只要我们的软件把数据从硬盘上读到内存,转成unicode来显⽰即可,由于所有的系统、编程语⾔都 默认⽀持unicode,所有我们的gbk编码软件放在美国电脑上,加载到内存⾥⾯,变成了unicode,中⽂就可正常展⽰。 类似⽤如下的转码的过程: 源有编码 - unicode编码- ⽬的编码 decode(UTF-8) 解码-- unicode -- encode(gbk)编码 #_*_coding:utf-8_*_ 的作⽤ 在python2⽂件中,经常在⽂件开头看到 “#_*_coding:utf-8 _*_ ”语句,它的作⽤是告诉python解释器此.py⽂件是utf-8编码,需要⽤ utf-8的编码去读取这个.py⽂件。 python2.x的bytes与python3.x的bytes的区别 Python2将string处理为原⽣的bytes类型,⽽不是unicode。⽽Python3所有的string均是unicode类型。 在python2.x中,写字符串,⽐如 s =”学习“prints 学习s #字节类型 \xd1\xa7\xcf\xb0 虽然说打印的是中⽂学习,但是直接调⽤变量s时,显⽰的却是⼀个个16进制表⽰的⼆进制字节,我们称这个为byte类型,即字节类型,它 把8个⼆进制组成⼀个byte,⽤16进制表⽰。 所以说python2.x的字符串其实更应该称为字符串,通过存储的⽅式就能看出来,但是在python2.x中还有⼀个bytes类型,两个是否相同 呢,回答是肯定的,在python2.x中,bytes==str。 python3.x中,把字符串变成了unicode,⽂件默认编码为utf-8。这意味着,只要⽤python3.x,⽆论我们的程序以那种语⾔开发,都可以 在全球各国电脑上正常显⽰。 python3.x除了把字符串的编码改成了unicode,还把str和bytes做了明确区分,str就是unicode格式的字符串,⽽bytes就是单纯的⼆进 制。(补充⼀个问题,在python3.x中,只要把unicode编码,字符串就会变成了bytes格式,也不直接打印成gbk的字符,我觉得就是想通 过这样的⽅式明确的告诉你,想在python3.x中看字符串,必须是unicode,其他编码⼀律是bytes格式)。 深⼊中⽂编码问题 python3内部使⽤的是unicode编码,⽽外部却要⾯对千奇百怪的各种编码,⽐如作为中国程序经常要⾯对的gbk,gb2312,utf8等,那 这些编码是怎么转换成内部的unicode呢? ⾸先看⼀下源代码⽂件中使⽤字符串的情况。源代码⽂件作为⽂本⽂件就必然是以某种编码形式存储代码的,python2默认源代码⽂件是 asci编码,python3默认源代码⽂件是utf-8编码。⽐如给python2代码⽂件中的⼀个变量赋值: s1 = a print s1 python2认为这个字符a就是⼀个as

文档评论(0)

1亿VIP精品文档

相关文档