python程序中中文乱码如何解决,Python 乱码
1、demo.py 文件和编码声明都为 GBK
这个方法比较笨,就是把demo.py文件改成GBK存储,编码语句也是GBK,个人不推荐。
热门IT软件开发工作室,大量免费python视频教程,欢迎在线学习!
#编码:gbk
S=中文
印刷品
印刷公司
2、中文用 unicode 表示
只要在中文前面加一个小U标记,后面的中文就会用unicode存储。
#编码:utf-8
S=u 中文
印刷品
Unicode字符可以在printrepr(s)cmd下打印,如下所示:
相关:《Python教程》
3、把中文强制转换为GBK或者unicode编码
强制转换为unicode编码,代码可以在Python中相互转换,比如utf-8到gbk,但是不同的代码不能直接转换。它需要通过unicode字符集进行转换。从上面的基础知识可以知道,unicode是字符集,不属于编码,而utf-8是一种具体实现unicode思想的编码。Utf-8转unicode是一个解码过程,可以通过decode从utf-8解码成unicode。
#编码:utf-8
S=中文
u=美国解码( utf-8 )
printu
打印类型(u)
打印机(u)
强制转换为gbk编码,上一步已经从utf-8转换为unicode。unicode是编码的过程,通过encode实现。
#编码:utf-8
S=中文
u=美国解码( utf-8 )
g=u.encode(gbk )
printg
打印类型(g)
印刷公司
总结
windows cmd窗口不支持Utf-8。如果要显示中文,必须转换成gbk或者unicode,Python idle支持这三种编码。中文乱码都是编码不一致造成的。utf-8用于存储,gbk用于打印会出现乱码。所以要保证乱码尽量不要保持统一。建议对所有代码使用unicode。
decode 解码
从其他编码改为unicode,叫做解码。解码被用作解码方法。第一个参数是解码后的字符串的原始编码格式,如果写错了会报错。比如s是utf-8,用gbk解码会出错。
#编码:utf-8
S=中文
u=美国解码( gbk )
printu
印刷公司
小提示
在Python idle和cmd下直接输入s= Chinese 会用gbk编码。如果在一个文件中输入s= Chinese ,文件存储格式是utf-8,那么s是用utf-8编码存储的,这就有点不一样了。你踩到坑了,文件运行成功Python idle可能会失败。
encode 编码
不能直接从utf-8转换成gbk,必须用unicode转换,这个很重要。编码后的原始字符串必须是unicode,否则会出错。
raw_input
Raw_input用于获取用户输入值,获取的用户输入值与当前运行环境代码相关。例如,如果cmd下的默认编码是gbk,那么输入的汉字就用gbk编码,不考虑demo.py文件编码格式和编码声明。
#编码:utf-8
s=raw _ input( inputsomething : )
印刷品
打印类型
打印机
GBK编码一个汉字的两个字节,而UTF 8编码一个汉字的三个字节。
细心的朋友注意到了,raw_input的提示是英文的,如果改成中文,真的有乱码。
#编码:utf-8
S=raw_input(请输入汉字:)
印刷品
打印类型
打印机
我该怎么办?只需强制提示字符串为gbk编码,但不允许unicode和utf-8。
#编码:utf-8
S=raw_input(u 请输入汉字:。编码( gbk ))
印刷品
打印类型
印刷公司
相等陷阱
两个字符串“中文”用不同的编码存储,utf-8编码和gbk编码存储的“中文”是不同的。
总结
如果你想避免乱码,请记住以下五条规则:
(1)文件以utf-8格式存储,其编码声明为utf-8,# encoding3360UTF-8。
(2)在汉字出现的地方前面加U。
(3)不同代码不能直接转换,要经过unicode中间跳转。
(4)在4)cmd下不支持utf-8编码。
(5)5)raw _ input提示字符串只能用gbk编码。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。