pythons字符编码

字符编码
本质上,计算机只能存储字节,即8比特值。如果是无符号数,取值范围从0x00到0xFF。在计算机早期,使用一个特定字节表示某个特定字符,如ASCII码,0x41表示A,0x42表示B。在西欧,通常使用latin-1编码,其前127个字符与7比特ASCII相同,其余部分则用于重音字符与欧洲人需要的其他符号。
Unicode编码是一个被广泛采纳的编码标准,Unicode为每个字符分配一个整数,即字元,但是Unicode不局限于使用一个字节表示每个 字符,因此有能力使用这种编码方式表示每种语言中的每个字符。并且,其中的前127个Unicode字符与7比特ASCII表示的前127个字符相同。
Unicode使用32位整数序列存储Unicode字符,每个字符代表一个字符,这在内存中非常便利。因此可以设计一个32位整数数组,数组中的每个元素与某个字符有一对一的对应关系。但对文件或通过网络连接发送的文本而言,尤其是在文本几乎都是7比特ASCII时,每个整数的4个字节中最多有3个字节会是0x00,为避免这种浪费,Unicode有几种表示方式:
在内存中,Unicode通常以UCS-2格式(16比特的无符号整数)表示前65535个字元,或者以UCS-4格式(32位整数)表示所有的字元,python编译时会设置为某一格式(sys.maxunicode为65535,使用UCS-2)
如果使用了Unicode,那么字元可以使用UTF-8编码,这种编码中,前127个字元,每个字符使用一个字节表示,其他字元,则使用两个或更多的字节数来表示每个字符。
UTF-16这种编码方式中,对大多数字符使用两个字节表示,其他的一些字符使用4个字节表示。但与UTF-8不同的是,UTF-16文本应该以一个字节顺序标记开始,以便用于读取该文本的代码可以判定字节对是big-endian还是little-endian。
python的.py文件使用UTF-8编码,可以在字符串中输入任意的Unicode字符-只要编辑器支持。在从外部源(如socket)读取数据时,python无法知道其使用的编码格式,因此会返回字节序列,并由程序员对齐进行解码。对文本文件,python采用本地编码-除非明确指定编码格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值