Python轉(zhuǎn)json時(shí)出現(xiàn)中文亂碼的問(wèn)題及解決
Python轉(zhuǎn)json時(shí)出現(xiàn)中文亂碼
設(shè)置報(bào)文頭
# -*- coding:gbk -*- ?
連接數(shù)據(jù)庫(kù)設(shè)置編碼
mysql = MySQLdb.connect(host='數(shù)據(jù)庫(kù),user=用戶名,passwd=密碼,db='數(shù)據(jù)庫(kù), init_command="set names gbk" )?
將數(shù)據(jù)轉(zhuǎn)換為json
jsonData = json.dumps(data, encoding='gbk',ensure_ascii=False) ?
如果json數(shù)據(jù)中文顯示有問(wèn)題,變成 \uXXX的形式,原因是中文以變?yōu)閡nicode 編碼了,而解碼默認(rèn)是以ASCII解的,中文不在ASCII編碼中,所以無(wú)法顯示,加上ensure_ascii=False可以防止變?yōu)閡nicode 編碼。
設(shè)置json編碼
?jsonData ?= jsonData .encode('gbk')
python json轉(zhuǎn)json字符串時(shí),中文被轉(zhuǎn)義
核心
json.dumps(jsonData, ensure_ascii=False)
import pymysql import json conn = pymysql.connect( host='127.0.0.1', port=3306, user='root', password='root', db='test' ) cursor = conn.cursor() sql = "select * from users" cursor.execute(sql) # row_1 = cursor.fetchone() row_2 = cursor.fetchmany(3) # print(row_1) # print(row_2) # print(list(row_2)) jsonData = [] for row in row_2: obj = {} obj['id'] = row[0] # obj['createTime'] = row[1] # obj['updateTime'] = row[2] obj['name'] = row[4] obj['phone'] = row[5] jsonData.append(obj) # print(row) print(jsonData) # json轉(zhuǎn)字符串中文轉(zhuǎn)字符 print(json.dumps(jsonData, ensure_ascii=False)) with open('./basedata.json', 'w') as f: f.write(json.dumps(jsonData, ensure_ascii=False)) conn.commit() cursor.close() conn.close()
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
YOLOv5車牌識(shí)別實(shí)戰(zhàn)教程(三)模型訓(xùn)練與評(píng)估
這篇文章主要介紹了YOLOv5車牌識(shí)別實(shí)戰(zhàn)教程(三)模型訓(xùn)練與評(píng)估,在這個(gè)教程中,我們將一步步教你如何使用YOLOv5進(jìn)行車牌識(shí)別,幫助你快速掌握YOLOv5車牌識(shí)別技能,需要的朋友可以參考下2023-04-04詳解python中flask_caching庫(kù)的用法
這篇文章主要介紹了詳解python中flask_caching庫(kù)的用法,可以在一定的時(shí)間內(nèi)直接返回結(jié)果而不是每次都需要計(jì)算或者從數(shù)據(jù)庫(kù)中查找。flask_caching插件就是提供這種功能的神器,需要的朋友可以參考下2023-05-05Python列表list數(shù)組array用法實(shí)例解析
這篇文章主要介紹了Python列表list數(shù)組array用法,實(shí)例解析了關(guān)于數(shù)組的各種常見操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10Python使用eval函數(shù)執(zhí)行動(dòng)態(tài)標(biāo)表達(dá)式過(guò)程詳解
這篇文章主要介紹了Python使用eval函數(shù)執(zhí)行動(dòng)態(tài)標(biāo)表達(dá)式過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10python下載圖片實(shí)現(xiàn)方法(超簡(jiǎn)單)
下面小編就為大家?guī)?lái)一篇python下載圖片實(shí)現(xiàn)方法(超簡(jiǎn)單)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07刪除pycharm鼠標(biāo)右鍵快捷鍵打開項(xiàng)目的操作
這篇文章主要介紹了刪除pycharm鼠標(biāo)右鍵快捷鍵打開項(xiàng)目的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01django開發(fā)教程之利用緩存文件進(jìn)行頁(yè)面緩存的方法
緩存相信對(duì)各位程序員們來(lái)說(shuō)都不陌生,下面這篇文章主要給大家介紹了關(guān)于django開發(fā)教程之利用緩存文件進(jìn)行頁(yè)面緩存的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11Python?matplotlib繪圖時(shí)使用鼠標(biāo)滾輪放大/縮小圖像
Matplotlib是Python程序員可用的事實(shí)上的繪圖庫(kù),雖然它比交互式繪圖庫(kù)在圖形上更簡(jiǎn)單,但它仍然可以一個(gè)強(qiáng)大的工具,下面這篇文章主要給大家介紹了關(guān)于Python?matplotlib繪圖時(shí)使用鼠標(biāo)滾輪放大/縮小圖像的相關(guān)資料,需要的朋友可以參考下2022-05-05