python2.7的乱码问题

本文探讨了Python中gbk和Unicode编码的区别,通过实例演示了不同编码下字符串的处理方式及长度差异。解释了如何解决UTF-8和Unicode的编码问题,并讨论了文件声明不同编码格式的影响。

pydev不提示变量的时候用alt+/ 来解决

看了http://blog.youkuaiyun.com/kiki113/article/details/4062063这篇文章之后的疑问:

问题1:gbk和unicode编码的不同

#coding:gbk
ss='哈哈'
print ss
ss1=u'哈哈'
print len(ss),len(ss1)
print ss==ss1 
结果:
哈哈
4 2
True

为什么相同但是长度不一样?

问题2:

解决utf-8格式和unicode和编码问题

s1=u'哈哈'
s='哈哈'
utf8_s=unicode(s,'utf-8')
utf8_s==s1
True
print utf8_s
哈哈
print s1
哈哈

python默认读取文本的格式为ansi,如果将文本的格式转化为utf-8则需要解码

例如:print open("Test.txt").read().decode("utf-8")


问题3:

声明文件的格式不同

文件的编码格式决定了在该源文件中声明的字符串的编码格式

即意味着如果声明为gbk编码的文件,最好文件也声明为gbk格式的,如果文件为utf-8格式的话,容易出错。

s='你好'
s1=u'你好'
s
'\xe4\xbd\xa0\xe5\xa5\xbd'
s1.encode('utf-8')
'\xe4\xbd\xa0\xe5\xa5\xbd'
s==s1.encode('utf-8')
True 
以上代码说明控制台程序默认的格式是utf-8编码


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值