关于raw_input输入中文时的编码转换

今日在敲代码时出现了如下问题

    

     

 中文的编码出现了问题(在键盘输入中文时也会出现同样的问题),中文的编码应该是utf-8编码格式,有以下两种方式来进行编码转换:

(1)decode用法:str  -> decode('the_coding_of_str') -> unicode

       即写为格式:raw_input('净利润为:'.decode('utf-8').encode('gbk'))

(2)encode用法:unicode -> encode('the_coding_you_want') -> str

       即写为格式:raw_input(unicode('净利润为:','utf-8').encode('gbk'))

这时候即可正确运行。

另外,Python2.7中可以使用sys和locale两个模块自动识别字符串的编码,修改后如下:

此时也可以正确执行。这个是raw_input提示符内提示文字为中文,若想要键盘输入的为中文时可以这样修改:

注意:最好在文件上方注释上提到进行了编码转换,方便后期或他人的观看,如:# -*- coding: UTF-8 -*-

在后期学习中,在print中包含中文时又出现类似问题,且上述方法似乎为见效,找到一个较好的网站如下:

http://www.jianshu.com/p/53bb448fe85b

其实想要解决中文乱码问题,首先你需要知道要处理的文件或者数据是如何编码的,查看编码可以使用如下方法:

#coding:utf-8
import chardet
#数组
for i in ['abc123','中国']:
    print i,chardet.detect(i)
#文件
f = open('a.doc',r)
data = f.read()
print chardet.detect(data)

即可获得编码方式,从而得知用什么方法去进行解码或重新编码。

posted @ 2017-05-22 22:27  金开仙人  阅读(315)  评论(0)    收藏  举报