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'))