python-重点难点

乱码

Python2的 默认编码是ASCII,不能识别中文字符,需要显式指定字符编码;
Python3的 默认编码 为Unicode,可以识别中文字符。

编码探测

可用以下两种方法进行探测

# coding=utf-8
s_str = "天天向上"
s_uni = u"天天向上"

#法一
if isinstance(s_str, str):
    print type(s_str).__name__
if isinstance(s_uni, unicode):
    print type(s_uni).__name__

#法二
import chardet
print chardet.detect(s_str)
print chardet.detect(s_uni)  #这是错误的,参数只能为str类型; chardet.detect(s_uni.encode('utf-8'))

转换

UNICDOE才是真正的字符串,而用ASCII、UTF-8、GBK等字符编码表示的是字节串。
字符编码的作用就是将人类可识别的字符转换为机器可识别的字节码,以及反向过程。

转换图

python2

python2.x字符串格式有
- str

默认格式(字符编码为ASCII)

  • unicode

字节串–>decode(‘原来的字符编码’)–>Unicode字符串–>encode(‘新的字符编码’)–>字节串

#!/usr/bin/env python
# -*- coding:utf-8 -*-
utf_8_a = '我爱中国'
gbk_a = utf_8_a.decode('utf-8').encode('gbk')
print(gbk_a.decode('gbk'))

python3

Python3中定义的字符串默认就是unicode,因此不需要先解码,可以直接编码成新的字符编码:
字符串–>encode(‘新的字符编码’)–>字节串

#!/usr/bin/env python
# -*- coding:utf-8 -*-
utf_8_a = '我爱中国'
gbk_a = utf_8_a.encode('gbk')
print(gbk_a.decode('gbk'))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值