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 解決字符集錯誤 正確摘錄MySql
- Linux下錯誤解決方案Linux
- latex 錯誤以及解決方案
- 解決MySQL server has gone away錯誤的解決方案MySqlServerGo
- ORA-28000錯誤解決方案
- Ubuntu Cannot allocate memory 錯誤解決方案Ubuntu
- Hadoop常見錯誤及解決方案Hadoop
- SSL錯誤ssl connect error 35的解決方案Error
- PbootCMS中常見的錯誤提示及其解決方案boot
- mysql Index column size too large 超過767錯誤解決方案(轉)MySqlIndex
- TCP網路除錯助手提示錯誤:“1035:未知錯誤” 解決方案TCP除錯
- HTTP 錯誤 500.21 - Internal Server Error 解決方案HTTPServerError
- CS0234 錯誤,奇葩bug,解決方案
- vagrant homestead 錯誤記錄以及解決方案
- IDEA發生“Error:java: 錯誤: 不支援發行版本 5”錯誤的解決方案IdeaErrorJava
- Ubuntu20.04出現段錯誤核心已轉儲問題解決方案Ubuntu
- No bean named 'xxx' is defined錯誤,原因及解決方案Bean
- 訪問 HTTPS 網站時的 SSL 錯誤解決方案HTTP網站
- photoshop匯出png發生未知錯誤的解決方案,ps匯出發生未知錯誤怎麼解決
- MySQL字符集亂碼與解決方案MySql
- 真機除錯出現 application installation failed 錯誤 解決方案除錯APPAI
- Ocelot錯誤解決
- MySQL主從複製錯誤——列型別轉換錯誤MySql型別
- navicat連線MySQL8.0.11報2059錯誤的解決方案MySql
- Can't Connect to MySQL Server on IP Address (10061) 錯誤的解決方案MySqlServer
- IIS 7.5 解析錯誤 命令執行漏洞解決方案
- java:錯誤:不支援發行版本1.4解決方案Java
- Windows下make clean指令錯誤[錯誤碼2](系統找不到指定檔案)的解決方案Windows
- Windows下使用python庫 curses遇到錯誤訊息的解決方案WindowsPython
- undefined reference to錯誤的解決方法Undefined
- Cocopods的升級錯誤解決
- ORA-12005 錯誤的解決
- SAXParseException的錯誤解決之二Exception
- 關於ESLint: Delete `␍`(prettier/prettier) 錯誤解決方案(3種)EsLintdelete
- 平臺配置及測試錯誤提示及解決方案
- ElasticSearch實戰系列十一: ElasticSearch錯誤問題解決方案Elasticsearch
- 解決 Python UnicodeEncodeError 錯誤PythonUnicodeError
- Intellij IDEA使用@Autowired註解,出現could not autowire錯誤,解決方案IntelliJIdea