python设置字符编码_字符编码-python

本文详细探讨了在Python2.7环境下字符编码的问题,指出不指定编码方式可能导致的乱码现象。通过示例解释了编码和解码过程,强调了在不同编码格式之间转换时指定正确编码的重要性,并提醒读者Python3默认采用Unicode编码,避免了类似问题。
摘要由CSDN通过智能技术生成

ba49b2db68f5

在python2.7下字符编码的问题

#--*-- coding:utf-8 --*--

s="你好" ##2.7就看第一行写啥

s_to_unicode=s.decode("gbk")

print s_to_unicode

结果为:浣犲ソ 其实这句话s_to_unicode=s.decode("gbk"),就相当于你非要用记事本打开word一样,没什么意义

s还是utf-8的编码格式,但你非要使用gbk的转码包,gbk的字节范围时包含utf-8的,但打开的是乱码而已,毕竟对应关系不一样

1 s="你好"

2 s_to_unicode=s.decode("gbk")

3 print s_to_unicode

如果没有第一行就会报错了,此时s将使用默认的ascii来存储,但ascii的字节范围是1个字节,无法保存的,就会报错了

http://www.cnblogs.com/work115/p/5924446.html

在python2中进行编码和解码的时候,不指定编码方式,那么python就会使用defaultencoding

1 #--*--coding:utf-8--

2 s="你好"

3 #: s是一个utf-8格式的字符串

4 u=s.decode("utf-8")

5 #: s被解码为unicode对象,赋给u

6 sg=u.encode("gbk")

7 #: u被编码为gbk格式的字符串,赋给sg

8 print sg

1 #--*--coding:utf-8--*--

2 s="你好"

3 ss=s.encode("gbk")

4 print ss

上面的代码会报错,报错信息:'ascii' codec can't decode byte......

因为没有指定defaultencoding,所以其实在做这样的事情:s.decode('ascii').encode('gbk')

(ascii解码包是无法解码utf-8的)

设置defaultencoding代码如下:

1 reload(sys)

2 sys.setdefaultencoding('utf-8')

当然这些主要是在python2.x下的问题,没有特殊需求就用python3吧

python3默认的字符编码为unicode

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值