python**連線mysql資料庫執行mysql語句 插入帶有中文字元的語句
報錯內容如下:
cur.execute(sql)
file "build/bdist.linux-x86_64/egg/mysqldb/cursors.py", line 181, in execute
query = query.encode(db.unicode_literal.charset)
unicodeencodeerror: 'latin-1' codec can't encode characters in position 952-954: ordinal not in range(256)
2020-07-21 11:23:47,644 - exec_make.py:134 - exception logged
traceback (most recent call last):
file "exec_make.py", line 127, in exch_insert
cur.execute(sql)
file "build/bdist.linux-x86_64/egg/mysqldb/cursors.py", line 181, in execute
query = query.encode(db.unicode_literal.charset)
unicodeencodeerror: 'latin-1' codec can't encode characters in position 952-954: ordinal not in range(256)
處理辦法:
0、python** 預設編碼 utf-8
1、插入的中文前面加上字首 u 宣告utf編碼
insert "name": u"中文"
2、在插入執行的語句前面執行一下語句
conn = connectmysql()
cur = conn.cursor()
conn.set_character_set('utf8')
cur.execute('set names utf8;')
cur.execute('set character set utf8;')
cur.execute('set character_set_connection=utf8;')
cur.execute(sql)
解決ok!
【mysql編碼介紹】
1、編碼 encode編碼 decode解碼
utf-8是unicode實現的方法之一 unicode 是「字符集」utf-8 是「編碼規則」
字符集:為每乙個「字元」分配乙個唯一的 id(學名為碼位 / 碼點 / code point)
編碼規則:將「碼位」轉換為位元組序列的規則(編碼/解碼 可以理解為 加密/解密 的過程)
Mysql插入中文報錯
插入語句 insert into person id,name,age,values 1,黃蓉 24,女 報錯 incorrect string value xbb xc6 xc8 xd8 for column name at row 1 分析 這是中文亂碼的原因,深層原因是utf 8編碼有可能是兩...
向mysql 插入中文數值報錯
報錯 error 1366 incorrect string value xe6 xb5 x8b xe8 xaf x95 for column description at row 1 原因是資料庫字段沒有設定編碼為utf8而是預設的lanti 1 檢視表中的各字段的屬性 show full col...
MySQL插入中文資料報錯
在運算元據庫插入中文會出現如下錯誤 error 1366 hy000 incorrect string value xc4 xe3 xba xc3 for column username at row 1 解決方案 在cmd中檢視當前資料庫的編碼設定 server db client conn 各自...