笨办法学python之中文字符编码问题

1,字符串中有汉字报错

s1 = '我'

print s1

此时报错是因为源代码作为文本文件,默认是以ascii码的形式进行存储的,而ascii码中没有汉字,因此出错。

解决方法是为文本文件设置编码格式,要在第一行或者第二行加上#encoding: utf-8,当然其它的格式也有gbk,gb2312,中文的话一般都是采用utf-8格式。

2,控制台出现乱码(加u法)

这是因为python编码和控制台编码是不一致的,因为python采用utf-8,而控制台采用gbk,一种解决方法是把python编码改为gbk,另一种是在'我'之前加个u字,也就是

s1 = u'我'

print  s1

这样就能打印出正确的'我'了,这里的这个u表示将后面跟的字符串以unicode格式存储,python在向控制台输出unicode对象的时候会自动根据输出环境的编码进行转换,但如果输出的不是unicode对象而是普通字符串,则会直接按照字符串的编码输出字符串,从而出现乱码的现象。

3,控制台出现乱码(转换编码法)

这种情况有两种方法,一个是unicode()法,另一个是decode(),encode()法。

方法一:

s1 = unicode('我', 'utf-8')

print s1

第一个参数跟这个中文字符串,第二个参数跟这个字符串原有的格式,这样返回的就是一个unicode格式的字符串。

方法二:

s2 = ‘我’.decode('utf-8')

print s2

decode括号内的参数跟这个中文字符串原有的格式,返回的是unicode格式。

相反encode()就是把unicode格式转换成其他格式,

例如:s3 = unicode('哈', 'utf-8').encode('utf-8'),这样s3就变成了utf-8形式的s3.

4,raw_input()中文提示乱码

raw_input()括号内输入的中文原本是utf-8格式,转换成unicode格式还是不能正常输出,这是与print的不同之处,print转换成unicode格式就可以输出了。解决方法就是在3的基础再将代码转换成gbk格式。

方法一:

n=raw_input(unicode('请输入文字','utf-8').encode('gbk'))

方法二:

n = raw_input('请输入文字'.decode('utf-8').encode('gbk'))

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值