Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python UnicodeDecodeError:无效的连续字节_Python_Oracle_Cx Oracle - Fatal编程技术网

Python UnicodeDecodeError:无效的连续字节

Python UnicodeDecodeError:无效的连续字节,python,oracle,cx-oracle,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 byte

代码示例如下:

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
回溯(最近一次呼叫最后一次):
UnicodeDecodeError中文件“”第3行:“utf-8”编解码器无法解码位置82-83中的字节:无效的连续字节
升级cx\u Oracle:

python -m pip install cx_Oracle --upgrade

中修复了在某些Windows环境中导致此错误的问题。如果这不能解决问题,请将问题记录在。

此处的问题不在于cx\U Oracle本身,而在于系统环境。我假设系统是基于windows的,因为这是最可能的情况。 是的,返回的错误完全不是描述性的,并且发生在第一行:

import cx_Oracle
这里发生的情况是,python试图导入cx_Oracle的二进制库(即dll),但由于某种原因未能导入,然后windows返回以国家本地代码页编码的本机错误描述(在我的例子中,俄语是cp1251),而不是python所期望的utf8。 了解原因的方法之一是:

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

顺便说一句:cx_Oracle 6.0b2并没有解决这个问题,我也不认为应该解决这个问题。

您让我们猜测错误发生在哪里。编辑问题以包含整个错误回溯输出,包括对导致错误的代码行的引用。还可以编辑问题以正确格式化代码。你真正的程序并没有像那样把所有内容都放在一行上,是吗?回溯(最近一次调用最后一次):UnicodeDecodeError中的文件“”,第3行:“utf-8”编解码器无法解码位置82-83的字节:无效的继续输入cx_Oracle db=cx_Oracle.connect('system','Oracle','192.168.2.42:1521/dave')打印(db.version)是,我知道Windows返回的本机错误描述不在UTF-8中。这就是cx_Oracle 6.0rc2中解决的问题。然后将文本从本地代码页转换为UTF-8。我很想听听你为什么认为这个问题不应该解决!当然,这个问题应该得到解决,因为他们都是:)在我看来,这只是一个漏洞百出的抽象的例子。也就是说,python导入内部预期load_dynamic中的错误将是utf编码的。所以我在这里可能是错的,但对我来说,这类事情似乎应该在较低的级别上处理(它知道它运行的系统、编码等)。非常感谢您的工作,顺便说一句。cx_Oracle是不可替代的。欢迎您。我明白你想说什么。不过,我仍然认为这个问题应该是可以解决的!我们必须看到,一旦我找到一个人,他可以始终如一地复制问题,并解释他们所做的事情——并更改代码以识别问题的来源以及为什么不显示我的调试消息!