python中编码的坑

1.python中正常的输入输出经过如下编解码流程:
    输入 -> str  -> decode -> unicode -> encode -> str -> 输出
一般情况下,我们在程序里做的只是:
    输入 -> str -> 逻辑处理 -> str -> 输出
2.python默认使用ascii进行decode,所以抛出的错误经常如下所示:
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xd5 in position 0: ordinal not in range(128)
3.如果直接对字符串使用encode方法,假设a是cp936编码:
    a.encode('utf-8')
同样会抛出错误,因为encode 是 unicode 类型的方法,对 str 进行调用时,程序会默认先直接试图用 ascii 编码把 str 转成 unicode。
正确的做法:
    a.decode('cp936').encode('utf-8')
4.你在编码时会同时处理到的几份编码:
    程序文件本身的编码 - 你在程序里赋值的字符串
    输入来源的编码 - 获取的变量值
    输出环境的编码 - 控制台、文件、网页

转载于:https://my.oschina.net/hounLeft/blog/682180

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值