Python2编码一直是个让人头疼的问题,能够让一个充满激情的新手,从刚安装完python解释器到放弃。
我就曾经放弃过,后来又拿了起来,真是一波多折。
so,如果可能就尽量使用Python3吧!
下面我就python2通过pymysql处理查询结果为例说明。
要查询的数据表(包含中文):
python2原始代码:
1、SyntaxError: Non-ASCII character
看着好好的代码,莫名其妙的来个语法错误
根据报错提示的链接:
http://python.org/dev/peps/pep-0263/
打开后发现需要在文件头加文件编码说明
或者
2、中文变成了?
添加完文件编码后,继续运行代码,代码文件中有 和 打印出来的内容分别是:
what? 查看的源码,发现有一个参数字符集,那么添加一个字符编码试试:
3、UnicodeEncodeError
添加完编码字符集参数后,运行又报错了!
发现print(rows)已经打印了,而且没有?,前面带u,说明是unicode字符
报错代码是:person = "{}{}".format(row.name, row.age),使用format格式化报错
明明已经在文件开头指定了文件的编码是utf-8了,怎么还是说unicode呢?
百思不得其解,经过百度,google,发现只用添加以下代码就行:
运行代码文件,发现输出正常了
当然,直接打印整个元组对象是不能直观的看到内容的,打印出来的是unicode码,而python3就可以
总结
好了,一路过来解决3个编码问题,都需要设置编码为
注意,的编码设置中间没有
给出最后的完整代码
(完)
看完本文有收获?请转发分享给更多人
关注「Python那些事」,做全栈开发工程师
领取专属 10元无门槛券
私享最新 技术干货