遇到問題描述
python讀取mysql 之后,print提示此錯誤,,如下第二種解決方案解決的
import
第一個錯
【UnicodeEncodeError:'gbk' codec can't encode character '\xa9' in position 0:illegal multibyte sequence】
這個錯誤,網上給出的解釋是:
某些軟件如notepad,在保存一個以UTF-8編碼的文件時, 會在文件開始的地方插入三個不可見的字符(0xEF 0xBB 0xBF,即BOM)。
因此我們在讀取時需要自己去掉這些字符,python中的codecs module定義了這個常量:
-
復制代碼
<pre style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 8px; font-weight: normal; position: relative; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0);">1 import io
2 import sys
3 #這里判斷下,把三個不可見的字符去除掉
4 if data[:3] == codecs.BOM_UTF8:
5 data = data[3:]
6 print(data.decode('utf-8'))</pre>復制代碼
第二個錯
- 【UnicodeEncodeError:'gbk' codec can't encode character '\xa0' in position 0:illegal multibyte sequence】
- 看完貼子【https://blog.csdn.net/jim7424994/article/details/22675759#】
- 后,才知道,原來是python的print()方法的問題。
- 在python中, print()方法在Win7的默認編碼是gbk,它在打印時,并不是所有的字符都支持的。
- 而且這個問題一般也就是在cmd中才會有。 在cmd中是改變標準輸出編碼:
1 import os,sys,io
2 sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
使用上面這兩句即可解決在CMD模式下運行出錯的狀態
編碼名稱 | 用途 |
---|---|
utf8 | 所有語言 |
gbk | 簡體中文 |
gb2312 | 簡體中文 |
gb18030 | 簡體中文 |
big5 | 繁體中文 |
big5hkscs | 繁體中文 |