PYTHON3 cx-Oracle 字符集 轉換錯誤的解決方案
Python 3.x 裡面 預設的 字串是 unicode了.
cx-oracle 在支援到 py3.0 的時候, 遇到了字符集轉換問題.
因為 gbk 編碼裡, 是很多時候, 是可以存一下半個漢子的字元.
資料庫裡儲存了這些字元, 那麼在從資料庫到py 的轉換過程中就會出現
字符集轉換錯誤:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 14: illegal multibyte sequence
很經典的錯誤.
當排除了, 環境變數字符集, 資料庫連線池字符集後.
還有其他方法可以用嗎?
是的.
oracle 的cx-oracle 已經給準備好了.
cx-oracle.Connection
跟 cx-oracle.cursor
類 增加了一個 回撥函式. 來處理這種異常.
當然也可以 實現反人類的 . 突破預設 型別轉換的 駭客方法.
-
oracle 從float 轉換為 python 的 decimal
OutputTypeHandleri1(cursor, , defaultType, size, , ): defaultType (cx_Oracle.STRING, cx_Oracle.FIXED_CHAR): cursor.var(binary, size, cur.arraysize, =OutConverter)
cursor.outputtypehandler = OutputTypeHandler 可以吧字串轉為 binary 2. 字符集轉換錯誤. def OutputTypeHandler(cursor, name, defaultType, size, precision, scale): if defaultType == cx_Oracle.STRING: return cursor.var(defaultType, size, arraysize=cursor.arraysize, encodingErrors='surrogateescape') connection.outputtypehandler = OutputTypeHandler 或者 cursor. outputtypehandler = OutputTypeHandler 3. 要求 . 要cx-oracle 6.4 以後版本. 之前的版本 , 基本無解了.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-2683925/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [轉]MySql錯誤程式碼1045的解決方案MySql
- latex 錯誤以及解決方案
- mysql 解決字符集錯誤 正確摘錄MySql
- Linux下錯誤解決方案Linux
- 解決MySQL server has gone away錯誤的解決方案MySqlServerGo
- Ubuntu Cannot allocate memory 錯誤解決方案Ubuntu
- ORA-28000錯誤解決方案
- ORA-07445: 錯誤解決方案
- ORA-00054錯誤解決方案(摘)
- ORA-00845的錯誤與解決方案
- SVN 遇到的一些錯誤解決方案
- PbootCMS中常見的錯誤提示及其解決方案boot
- Hadoop常見錯誤及解決方案Hadoop
- HTTP 錯誤 500.21 - Internal Server Error 解決方案HTTPServerError
- MySQL插入資料1366錯誤解決方案MySql
- 開發常見錯誤及解決方案
- MySQL錯誤Incorrect file format解決方案薦MySqlORM
- Java java.lang.ExceptionInInitializerError 錯誤解決方案JavaExceptionError
- DataGuard ORA-10458錯誤解決方案
- informatica SORT_40406 錯誤解決方案ORM
- SQL Server 錯誤程式碼:17058 。解決方案SQLServer
- mysql Index column size too large 超過767錯誤解決方案(轉)MySqlIndex
- SSL錯誤ssl connect error 35的解決方案Error
- MySQL連線錯誤(10048)的解決方案MySql
- 【轉載】ORA-27054 錯誤解決
- oracle錯誤及解決方式集(轉)Oracle
- 執行轉換時如何讓Kettle記錄錯誤並繼續執行?——記一種解決方案
- vagrant homestead 錯誤記錄以及解決方案
- JNI命令列下編譯錯誤解決方案命令列編譯
- 使用JPEGImageEncoder提示Access restriction:錯誤 解決方案REST
- Unsupported major.minor version 51.0 錯誤解決方案
- ORA-01658 錯誤之解決方案
- ant構建時出現錯誤解決方案
- photoshop匯出png發生未知錯誤的解決方案,ps匯出發生未知錯誤怎麼解決
- 語法錯誤 : 缺少“;”(在“型別”的前面)的解決方案型別
- TCP網路除錯助手提示錯誤:“1035:未知錯誤” 解決方案TCP除錯
- ERP字元轉換csscan 時,libclntsh.so.9.0 錯誤 解決方法字元CSS
- IDEA發生“Error:java: 錯誤: 不支援發行版本 5”錯誤的解決方案IdeaErrorJava