python讀取資料庫的檔案出現編碼問題的解決辦法

2021-10-05 13:28:41 字數 1407 閱讀 4169

一些基本概念:

編碼:將人類可識別的字元轉換為機器可識別的位元組碼、位元組序列。encode

解碼:編碼的反向過程。decode

unicode是人類可識別的字串格式。ascii、utf-8、gbk等都是機器可識別的位元組編碼。

python2的預設編碼是ascii碼,因此無法識別中文字元,需要顯式指定字元編碼。

機器記憶體中的資料,統一使用unicode編碼

資料傳輸或者儲存到硬碟上,使用utf-8編碼

in [43]

:'美麗人生'

.encode(

'gbk'

)out[43]

: b'\xc3\xc0\xc0\xf6\xc8\xcb\xc9\xfa'

in [44]

: b'\xc3\xc0\xc0\xf6\xc8\xcb\xc9\xfa'

.decode(

'gbk'

)out[44]

:'美麗人生'

資料庫:oracle

使用cur.execute(sql, param)執行後,獲取對應資料時要注意編碼格式

定義了fetchall函式,獲得的每行資料裡的每個資料解碼為unicode,然後再提供dict生成dict資料。

def

fetchall

(cur, encoding=

'gbk'):

title =

map(

lambda x: x[0]

.lower(

), cur.description)

rows = cur.fetchall(

) rows =

map(

lambda row:

dict

(zip

(title, gbk_to_utf8_row(row, encoding=encoding)))

, rows)

return rows

def

gbk_to_utf8_row

(rows, encoding=

'gbk'):

return

[gbk_to_utf8(x, encoding=encoding)

for x in rows]

def

gbk_to_utf8

(item, encoding=

'gbk'):

ifisinstance

(item,

str)

:return item.decode(

'utf-8'

)return item

Python讀取大檔案並插入資料庫

把幾個大的檔案的內容讀到資料庫中。檢視了手冊open方法,首先想到了seek 方法,和fread 方法讀到一段內容來執行插入。大概說一下方法吧。一 取資料 取一段內容,以回車 n 分隔內容為資料,批量插入資料庫 如要讀取檔案內容如下 abcd efgh ijkl mnop 按13個字元取內容 roo...

Python 讀取Sql Server資料庫

created on sep 11,2014 author liu.chunming import pyodbc def get sms operator sectornumber 0 cnxn pyodbc.connect driver server 10.86.9.171 database mc...

Clementine讀取資料庫檔案

看了一些網上寫的資料,不太熟悉資料庫和odbc,只是總結下如何讀取。clementine讀取資料庫檔案,該資料庫檔案時access資料庫檔案。第一步,建立資料來源 win7系統下,win r後輸入odbcad32,出現odbc資料管理器,在系統dsn中選擇新增 開啟資料來源配置,發現只有sqlser...