pymssql查詢結果中文亂碼處理


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM