1. 程式人生 > >python與sqlite處理中文字元時出現的編碼錯誤問題解決

python與sqlite處理中文字元時出現的編碼錯誤問題解決

   python編碼如果把中文資料儲存至sqlite資料庫某一欄位中,再通過查詢語句取出並進行相關的字串操作時,經常會出現錯誤提示,類似於UnicodeDecodeError,提示某一型別編碼不能轉換。

    出現這個問題的原因是因為python預設使用unicode處理sqlite3的TEXT型別(varchar型別也是如此,因為在sqlite中varchar其實就是TEXT)。python把中文存入資料庫時使用了類似於GBK這樣的編碼,取出時會嘗試把TEXT型別資料轉換成unicode,從而出現錯誤。

    由此導致的另一個不容易發現的錯誤是儲存在資料庫中的中文進行了base64之類的編碼,在python中取出時不會存在錯誤,但是再進行base64解碼,並與sqlite3中取出的其它text欄位進行字串拼接等處理,就出現編碼轉換錯誤,很難發現問題原因,可以把其它text欄位進行如'aaa'.encode('gbk')編碼成GBK碼解決,但不提倡這種方法,更好方法如下:

    解決方法是python連線sqlite資料庫後進行如下設定:

  conn = sqlite3.connection(“……”)
        conn.text_factory = str

    另外為了python程式碼中硬編碼的中文字串不出現問題,除了在原始碼開始新增

    # -*- coding:utf-8 -*-  

    還要設定python原始碼的編碼為utf-8

    import sys

    reload(sys)

    sys.setdefaultencode('utf8')

相關推薦

pythonsqlite處理中文字元出現編碼錯誤問題解決

   python編碼如果把中文資料儲存至sqlite資料庫某一欄位中,再通過查詢語句取出並進行相關的字串操作時,經常會出現錯誤提示,類似於UnicodeDecodeError,提示某一型別編碼不能轉換。     出現這個問題的原因是因為python預設使用unicod

python用open()函式開啟.py等文件出現編碼錯誤解決辦法

UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 94: illegal multibyte sequence 出現

Python開發】Url中文字元記得轉碼edcode("utf-8")

在url中使用中文其實是一個壞習慣,會帶來一系列的轉碼問題, 我更喜歡英文譯名或者id來標識某個uri。但是現實往往是殘酷的, 特別是在我們呼叫別人服務時候,有時候被逼無奈使用中文URL。 Python中unicode轉碼一向是讓人頭疼的問題。數次碰壁之後,我也摸出了一

【爬坑】Python 3.6 在 Socket 程式設計出現型別錯誤 TypeError: a bytes-like object is required, not 'str'

  1. 問題描述   Python 3.6 在 Socket 程式設計時出現錯誤如下 Traceback (most recent call last): File "F:/share/IdeaProjects/test/mypython/test/test10_tcpcli

Python】使用pip install出現UnicodeDecodeError錯誤解決方法

今天在公司的win7 電腦上在配置好Python並安裝上pip後,打算用pip安裝一些常用包。但是安裝包的時候出現了錯誤,是在之前電腦上都沒有出現的。然後網上查詢知道了原因。是編碼問題 看最後的報錯資訊,這個一般都是從開始追溯資訊源: UnicodeDecodeErro

SpringMVC在返回JSON資料出現406錯誤解決方案

       在SpringMVC框架的使用中常常會使用@ResponseBody註解,修飾“處理器”(Controller的方法),這樣在處理器在返回完畢後,就不走邏輯檢視,而是將返回的物件轉成JSON字串響應給客戶端,但這種操作有時會出現406錯誤。

win8 上安裝SVN出現2503錯誤解決方法

在win8上安裝SVN客戶端時會出現2503的錯誤,其實是許可權不夠 解決辦法: 1、點選視窗鍵 2、鍵盤輸入“cmd” 3、在查詢出來的應用中,選擇命令列提示,點選選擇以管理員身份執行 4、在命令列視窗輸入命令: msiexec /package “svn安裝

navicat MySQL 匯出資料出現1577錯誤解決方法

問題描述: Navicat for MySQL匯出任何一個數據庫,都會提示:1577 – Cannot proceed because system tables used by Event Scheduler where found damaged at server s

應用程式中嵌入的網頁執行出現“指令碼錯誤解決方法

 CComPtr<IWebBrowser2> pWB2;  HRESULT hr;  hr = m_wndIE.QueryControl(&pWB2);  if (pWB2)  {   CComVariant v;   CComBSTR url(

安裝GenyMotion出現錯誤解決

Genymotion 號稱模擬器之王,百聞不如一見,打算安裝試試,所有軟體,外掛都安裝好之後在eclipse中啟動總是報錯。錯誤如下: Output file: C:\Users\DELL\.genymotion-eclipse.log Loading Genymotio

Win7下安裝和解除安裝Oracle10g出現錯誤解決方法

錯誤現象: 在Win7下安裝了32位的Oracle10.2.0.1.0,想安裝一個64位的Oracle10g。在使用Universal Installer解除安裝時出現了錯誤提示:www.2cto.com “程式異常終止”。發生內部錯誤。請將以下檔案提供給Oracle技術支

PHP用mb_string函式庫處理windows相關中文字元

昨天想批處理以前下載的一堆檔案,把檔案裡的關鍵內容用正則匹配出來,集中處理。在操作檔案時遇到一個問題,就是windows作業系統中的編碼問題。 我們都知道windows中(當然是中文版),檔名和檔案內容等編碼都是gbk,而我們在開發過程中,IDE裡的編碼則是UTF-8,(這裡不討論為什麼等等問題, 只考慮

【安裝Python環境】之“安裝 setuptools ”出現的問題以及解決辦法

ace python環境 str ots tar oot bsp users 默認 安裝Python環境時,還需要安裝“setuptools 與 pip”,但是安裝setuptools時出現了幾個問題,如下: setuptools 與 pip 下載地址如下:https://

恢復Oracle數據庫鏡像出現錯誤處理方式

tmpfs oot memory support tab acl con rac mode 出現錯誤     ORA-01034 ORACLE not available     ORA-27101 Shared memory realm does not exist  

IE瀏覽器 ajax傳參數值為中文出現亂碼的解決方案

on() ajax code pan cti .ajax ole style func 找了很多方法,發現就這個方法簡單、直接、方便,直接推薦哦! 在漢字的位置加個保護措施:encodeURIComponent(parentid) 舉個栗子>>>

【VMware】[vm tools]安裝VMtools出現錯誤,無法主機共享檔案

**主機:WIN7旗艦版 - 64bit 虛擬機器版本: 11.0.0 build-2305329 客戶機:ubuntu-16.04.2** 在安裝vm tools 時出現的問題,除了共享檔案的功能不能正常安裝,其餘功能都可實現。 出現的錯誤: make: Entering

js 處理中文字元排序問題

最近在使用jQuerg外掛Datatables時遇到這樣一個問題。當想要排序表格中某列是中文時,藉助外掛chinese-string發現排序還是有問題。然後就看了一下該程式碼的實現方式,它是藉助js中的localCompare()函式實現的。 然後我在本地瀏覽器做了一個測試,發現果然結果和

replacereplaceAll遇到轉義字元的區別

我們都知道replaceAll(regex,String)在進行字串替換時會首先匹配正則表示式,而replace則沒有這方面的規定。轉義字元同樣屬於正則的一種,今天遇到個問題,將sql:“SELECT PARAM1,PARAM2,TO_CHAR(PARAM3,'YYYY-MM-DD HH24:M

python資料預處理字元變數獨熱編碼(one-hot encoding)

許多的資料取樣中會有很多以以字串形式出現的資料,這樣的資料沒有辦法直接跟其他數值變數合併成向量,這些值一般是分類資料或是順序資料。 分類資料:分類資料指某些資料類別的只能歸於某一類非數值型資料,例如男、女。分類資料中的值沒有明顯高低好壞之分,只是由來區分兩個或多個具有相同或相

SQL Server 建立連線出現網路相關的或特定於例項的錯誤。未找到或無法訪問伺服器 在 SQL Server 建立連線出現網路相關的或特定於例項的錯誤。未找到或無法訪問伺服器。

在與 SQL Server 建立連線時出現與網路相關的或特定於例項的錯誤。未找到或無法訪問伺服器。   1.開啟sqlserver 管理配置器 2.點選sqlExpress的協議,我們要啟動所有狀態。 3.選擇TCP/IP,點選右鍵,選擇屬性,我們