pymssql查詢結果中文亂碼處理
亂碼原因
- 亂碼的地方加上.encode(‘latin1’).decode(‘gbk’),先編碼成SQL server支持的編碼格式,再解碼成中文。
.encode(‘latin1’).decode(‘gbk’)
.encode(‘latin1’)等價於.encode(‘l1’)
@staticmethod
def cn_garbled_code(resList):
"""
數據庫返回中文亂碼問題解決,進來一個list進行處理
"""
target_list = []
target_index = 0
for item in resList:
target_list.insert(target_index,list(item))
target_index+=1
for item in target_list:
for item1 in item:
if type(item1) is str:
try:
if(chardet.detect(item1.encode('l1'))['encoding'] != 'ascii'):
# print(item1.encode('l1').decode("GBK"))
item_index = target_list.index(item)
item1_index = item.index(item1)
target_list[item_index][item1_index] = item1.encode("l1").decode("GBK")
except UnicodeEncodeError:
# print("不用編碼")
pass
return target_list
核心代碼
try:
if(chardet.detect(item1.encode('l1'))['encoding'] != 'ascii'):
# print(item1.encode('l1').decode("GBK"))
item_index = target_list.index(item)
item1_index = item.index(item1)
target_list[item_index][item1_index] = item1.encode("l1").decode("GBK")
except UnicodeEncodeError:
# print("不用編碼")
pass
參考博客:https://blog.csdn.net/qimowei/article/details/113702044