python3中byte转str_Day168:python2与python3下编码分析

编码样式

  • ASCII编码:美国标准代码,将各种东西(英文字母,数字,标点,字符)换成计算机识别的二进制数,一共265个字符,不支持汉字
  • Unicode:全球所有字符的编码,但是没有规定的保存方式,如65-->A
  • ANSI:一般跟系统语言有关系
  • GB2312:汉字处理,比较少,存储编码
  • GBK编码:汉字编码,进行了扩展,包含生僻字,存储编码
  • UTF-8:表示把unicode编码存储的时候,把一个汉字或者其他字符,保存为3个字节,完全兼容ascii码的256个字符;
  • UTF-32:保存为4个字节,很占内存

乱码的根源

乱码的根源就在于字符集编码不匹配导致,探索隐藏在编程过程中鲜为人知的字符集转换问题,将有助于从根源上解决乱码问题。

  1. 源码字符集:
    英文the source character set,是指源代码文件是使用何种编码字符集保存和传输的。
  2. 执行字符集:
    英文the execution character set,是指源代码经过编译、链接后的可执行文件是使用何种编码字符集保存的,程序实际执行时,内存中的字符串编码就是执行字符集。
  3. 运行环境编码:
    是指操作系统(或者当前控制台环境)用于显示文字的编码字符集。

源代码文件(源码字符集)经过编译/链接,生成可执行文件(执行字符集),最后程序运行于实际环境中(运行环境编码)。在这过程中如果有字符集不匹配,最终就无法显示预期的文字信息,甚至产生乱码。

  1. 编译器在编译源代码时,会将源码字符集转化为执行字符集,如果编译器不能正确识别源码字符集,就得不到正确的字符串数据。
  2. 可执行文件在实际运行环境中执行时,为了在控制台(或者其他UI)上显示出字符串,就要将执行字符集转化为运行环境的字符集。如果运行环境的字符集与执行字符集不同,也会导致乱码。

总结起来,要想使程序不会乱码,必须满足:

  1. 编译器准确识别了源码字符集,从而得到正确的字符串数据(执行字符集)。
  2. 运行环境的编码与执行字符集相同。

python2.7的编码方式

python2.7的默认编码方式为ascii字符集,这里所说的编码方式指执行编码方式,所以在源文件的开头,往往需要加上# -

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值