UnicodeDecodeError:无效的连续字节

时间:2017-08-22 00:59:34

标签: python oracle cx-oracle

代码示例如下:

import cx_Oracle
db=cx_Oracle.connect('system','oracle','192.168.2.42:1521/dave')
print db.version

返回的错误是

Traceback (most recent call last): 
File "<stdin>", line 3, in <module> UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 82-83: invalid continuation byte

2 个答案:

答案 0 :(得分:0)

升级cx_Oracle:

python -m pip install cx_Oracle --upgrade

Version 6.0 rc 2中修复了在某些Windows环境中导致此错误的问题。如果这不能解决问题,请在https://github.com/oracle/python-cx_Oracle/issues处记录问题。

答案 1 :(得分:0)

问题不在于cx_Oracle本身,而在于系统环境。我假设系统是基于Windows的,因为它是最可能的情况。 是的,返回的错误根本不是描述性的,并且发生在第一行:

import cx_Oracle

这里发生的是python尝试导入cx_Oracle的二进制库(这是dll),由于某种原因它无法这样做,然后windows返回在国家本地代码页中编码的本机错误描述(cp1251 for Russian in我的情况)而不是python期望的utf8。 看待这个原因的方法之一:

try:
    import cx_Oracle
except Exception as ex:
    print(ex.object.decode('1251'))

btw。:cx_Oracle 6.0b2没有解决问题,我认为不应该