Python 设置查询结果在cx\ U Oracle/UnicodeDecodeError中用汉字编码

Python 设置查询结果在cx\ U Oracle/UnicodeDecodeError中用汉字编码,python,encoding,cx-oracle,Python,Encoding,Cx Oracle,我正在处理一个包含大量汉字的数据库。我的代码是这样的: connection=cx\u Oracle。连接%s/%s@%s:%s/%s%用户名、密码、主机、端口、服务\u名称 cursor=connection.cursor 光标。执行“选择酒店ID,创建时间,来源,内容,标题,价格,从T\U FX\U注释更新时间” 对于光标中的行: 这里有东西 通过 但我得到了这个错误: Traceback (most recent call last): File "test.py", line 17,

我正在处理一个包含大量汉字的数据库。我的代码是这样的:

connection=cx\u Oracle。连接%s/%s@%s:%s/%s%用户名、密码、主机、端口、服务\u名称 cursor=connection.cursor 光标。执行“选择酒店ID,创建时间,来源,内容,标题,价格,从T\U FX\U注释更新时间” 对于光标中的行: 这里有东西 通过 但我得到了这个错误:

Traceback (most recent call last):
  File "test.py", line 17, in <module>
    for row in cursor:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 26: illegal multibyte sequence
似乎GBK还不够。我想让cx oracle给我GB18030编码的结果,而不是GBK。我该怎么做

是只读的。。。我在cx oracle文档中没有找到任何建议我可以这样做的内容

我使用的是Python 3.3.2和cx oracle 5.1.2。
这里一定有什么我遗漏了。谢谢你的帮助

尝试在程序开始时设置NLS_LANG环境变量:

import os
os.environ["NLS_LANG"] = ".GB18030"

我也遇到了同样的问题,我通过将环境变量NLS_LANG设置为.AL32UTF8来解决。这似乎是一种通配符,表示对任何语言使用utf-8

import os
os.environ["NLS_LANG"] = ".zhs16gbk"
environ[NLS_LANG]是Oracle的,所以请使用Oracle的格式。
我用Python2.6.8和Oracle 11g解决了这个问题。

您使用的是Python2还是3?对我来说也是这样。。。您找到解决方案了吗?它给了我以下错误:cx_Oracle.DatabaseError:ORA-12705:无法访问NLS数据文件或指定的环境无效。顺便说一句,我现在使用的是Python 3.3.2。3.5年后,它仍然有效。Python 3.6.3+cx_Oracle 7.1.2