快乐Python快速上手系列10 - 中文编码问题
2017-12-27 15:09
639 查看
关于现实中文字符,总会遇到很多问题,比方说在Python2.7中,默认情况,Python对字符的解码时采用ASCII的形式,这也是为什么当我们文件里添加了中文注释,或者字符串里包含了中文字符,python会报错如下:
运行后错误信息为:
纵然在字符串前面加上u也不行
运行错误依然为
python默认的编码格式为ASCII,所以它无法解释中文字符。
解决方法,在文件的开头加入希望python采用的编码格式的声明,例如:
总体代码示例如下:
输出
但是在python3.5中就不存在这个问题啦,因为Python3.5的系统编码默认就是utf-8,下面代码在Python3.5中不需要担心任何的问题。
实际应用中,显示的时候还存在其他方面的问题,比方说,cmd的显示问题,
可以相应的更改其codepage来达到目的。
举例,
我们要获取的信息是:
©2015 Baidu 使用百度前必读 意见反馈 京ICP证030173号
Windows cmd 用的是cp936,也就是中文的GB2312,在GBK的字符集里没有“©”,这就导致通过GBK解析的时候出现编码问题。
这就像你在翻译英文的时候,出现了一个单词,这个单词你查遍了牛津大词典都没找到对应的含义解释,那么自然是会有问题的。
那假设,我还就想在cmd下执行这个python程序了,那么可以去修改cmd的默认编码类型为utf-8,对应的编码为CHCP 65001(utf-8)。在cmd 下输入:chcp 65001 命令回车。
然后,修改cmd的字体为“Lucida Console”,再来执行程序就可以被正确输出了。
Wish you happy with python:)
if __name__ == '__main__': s1 = "你好" print(s1) |
File "D:\PythonProj\TLDA_Analyser\Chinese_Sym.py", line 2 SyntaxError: Non-ASCII character '\xe4' in file D:\PythonProj\TLDA_Analyser\Chinese_Sym.py on line 5, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details |
if __name__ == '__main__': s1 = u"你好" print(s1) |
File "D:\PythonProj\TLDA_Analyser\Chinese_Sym.py", line 3 SyntaxError: Non-ASCII character '\xe4' in file D:\PythonProj\TLDA_Analyser\Chinese_Sym.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details |
>>> sys.getdefaultencodi 4000 ng() 'ascii' >>> |
#coding=utf-8 或者 #-*- coding: UTF-8 -*- |
#coding=utf-8 import chardet if __name__ == '__main__': s1 = "你好" print(s1) s_arr = bytearray(s1) print(chardet.detect(s_arr)) if isinstance(s1, unicode): print("S1 is unicode") else: print("S1 is not unicode") s2 = u"你好" s_arr = bytearray(s2, 'utf-8') print(chardet.detect(s_arr)) if isinstance(s2, unicode): print("S2 is unicode") print(s2) pass |
你好 {'confidence': 0.7525, 'language': '', 'encoding': 'utf-8'} S1 is not unicode {'confidence': 0.7525, 'language': '', 'encoding': 'utf-8'} S2 is unicode 你好 |
if __name__ == '__main__': s1 = "你好" print(s1) pass |
可以相应的更改其codepage来达到目的。
举例,
我们要获取的信息是:
©2015 Baidu 使用百度前必读 意见反馈 京ICP证030173号
Windows cmd 用的是cp936,也就是中文的GB2312,在GBK的字符集里没有“©”,这就导致通过GBK解析的时候出现编码问题。
这就像你在翻译英文的时候,出现了一个单词,这个单词你查遍了牛津大词典都没找到对应的含义解释,那么自然是会有问题的。
那假设,我还就想在cmd下执行这个python程序了,那么可以去修改cmd的默认编码类型为utf-8,对应的编码为CHCP 65001(utf-8)。在cmd 下输入:chcp 65001 命令回车。
然后,修改cmd的字体为“Lucida Console”,再来执行程序就可以被正确输出了。
Wish you happy with python:)
相关文章推荐
- 快乐Python快速上手系列0 - Python Tips
- 快乐Python快速上手系列1 - CSV操作
- 快乐Python快速上手系列2 - XML文件读写
- 快乐Python快速上手系列7 - 动态获得类属性
- 快乐Python快速上手系列5 - Excel文件处理
- 快乐Python快速上手系列9 - 界面Tkinter编程
- 快乐Python快速上手系列4 - UTC与本地时间转换
- python基础系列教程——Python中的编码问题,中文乱码问题
- python tornado框架中的中文编码问题
- Python中文编码问题
- python中文编码问题
- python的中文编码问题
- python中文编码问题
- 利用python处理xml -- 中文编码问题
- Python中文编码问题
- python中的中文编码问题
- python 中文编码问题
- Python 中文 编码问题
- python的中文编码问题
- python中中文编码问题