60g/6idea pockett bxs/12bxs/ctn是什么规格

您所在的位置: &
Python 编码解析
时间: 编辑:feesland 来源:本站整理
Python 编码解析
  ASCII&& Unicode;UTF-8&&gbk
    在具体说明 Python 处理编码之前,先来理清 ASCII、Unicode;UTF-8、gbk 究竟是什么?这边仅简单介绍下,具体请百度。
    ASCII:是基于拉丁字母的一套电脑编码系统,是现今最通用的单字节编码系统。ASCII(1~127) 仅可代表英文、数字及一些符号等,如,A 的 ASCII 码为65(十进制)。
    Unicode:为了解决传统的字符编码方案的局限而产生,为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。犹如其本身的英文含义,Unicode是一种所有符号的编码。Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
    UTF-8:是一种针对Unicode的可变长度字符编码,它是Unicode实现的方式之一,是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间,参考如下:
字符ASCIIUnicodeUTF-8
    gbk:GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码。
  Python 3&支持 Unicode
    从 Python 3.0 开始所有的字符串都支持 Unicode,默认保存为UTF-8格式;故无须特殊处理,即可正常 print 中文
      
    但Python 3. 对应 sys 模块无 sys.setdefaultencoding()这个函数,而python 3的代码和包管理上打破了和2.x的兼容,故原2.x的扩展包要适应这种情况来改写。
  Python2 处理 Unicode
    Python2 默认源代码文件是 ASCII 编码,故仅仅使用英文、数字的情况下一切正常,但是若使用了中文等,会报错,如下:
      
    为了解决此问题,需要保存为 UTF-8&格式,通常会在 .py&文件头上加上 &# -*- coding: utf-8 -*-& ,这样,python就会依照utf-8的编码形式解读其中的字符,加上后运行,如下:
      &
    这边,直接 print 中文字符串显示为乱码,这是由于python编码与控制台编码的不一致造成的。Windows下控制台中的编码使用的是gbk,而在代码中使用的utf-8,python按照utf-8编码打印到gbk编码的控制台下自然就会不一致而不能打印出正确的汉字。
    对此,Python2用来存储文本数据的类型为Unicode 对象,它可以用于存储和维护 Unicode 数据,与现有的字符串对象有良好的集成,必要时提供自动转换。在 Python 中创建 Unicode 字符串和创建普通的字符串一样简单,只需在字符串引号前加 u&即可,如上例中的 &u"中文" 。这样处理之后,print&出的中文就不会乱码了。
    在Python 3.x版本中,把'xxx'和u'xxx'统一成Unicode编码,即写不写前缀u都是一样的
  sys.setdefaultencoding()
    Python2,可通过&sys.setdefaultencoding('utf8') 来设置默认encoding方式,注意,一定要增加 reload(sys),原因参考下方引用。
#!/usr/bin/env python
#encoding: utf-8
import sys
#引用sys模块进来,并不是进行sys的第一次加载
reload(sys)
#重新加载sys
sys.setdefaultencoding('utf8')
#调用setdefaultencoding函数
那么为什么要重新加载,而直接引用过来则不能调用该函数呢?因为setdefaultencoding函数在被系统调用后被删除了,所以通过 import引用进来时其实已经没有了,所以必须reload一次sys模块,这样setdefaultencoding才会为可用,才能在代码里修改解 释器当前的字符编码。
在python安装目录的Lib文件夹下,有一个叫site.py的文件,在里面可以找到main() --& setencoding()--&sys.setdefaultencoding(encoding),因为这个site.py每次启动 python解释器时会自动加载,所以main函数每次都会被执行,setdefaultencoding函数一出来就已经被删除了。
热门关键字 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
美国西屋Ovation3.5培训(一)Ovation系统介绍及
下载积分:3000
内容提示:美国西屋Ovation3.5培训(一)Ovation系统介绍及
文档格式:PPT|
浏览次数:21|
上传日期: 01:54:14|
文档星级:
该用户还上传了这些文档
美国西屋Ovation3.5培训(一)Ovation系统介绍及
官方公共微信

我要回帖

更多关于 mobipocket reader 的文章

 

随机推荐