首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cx_Oracle / UnicodeDecodeError中设置中文查询结果编码

在cx_Oracle / UnicodeDecodeError中设置中文查询结果编码
EN

Stack Overflow用户
提问于 2013-08-16 06:12:59
回答 3查看 6.1K关注 0票数 8

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

代码语言:javascript
复制
connection = cx_Oracle.connect("%s/%s@%s:%s/%s" % (username, password, host, port, service_name))
cursor = connection.cursor()
cursor.execute('SELECT HOTEL_ID,CREATE_TIME,SOURCE,CONTENT,TITLE,RATE,UPDATE_TIME FROM T_FX_COMMENTS')

for row in cursor:
    # Stuff goes here
    pass

但我知道这个错误:

代码语言:javascript
复制
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.Connection.encoding是只读的.我在cx-oracle文档中没有发现任何建议我可以这样做的东西。

我使用Python3.3.2和cx-oracle 5.1.2。这里一定有我遗漏的东西。我们很感激你的帮助!

EN

回答 3

Stack Overflow用户

发布于 2016-01-13 14:33:41

我面临着同样的问题,我通过将环境变量NLS_LANG设置为.AL32UTF8来解决这个问题(这似乎是一种“通配符”,上面写着“对任何语言都使用utf-8”)。

票数 7
EN

Stack Overflow用户

发布于 2013-08-16 09:13:50

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

代码语言:javascript
复制
import os
os.environ["NLS_LANG"] = ".GB18030"
票数 2
EN

Stack Overflow用户

发布于 2016-07-11 09:06:52

用这个:

代码语言:javascript
复制
import os
os.environ["NLS_LANG"] = ".zhs16gbk"

os.environ"NLS_LANG“是Oracle.So使用的格式。我用python 2.6.8和Oracle 11g解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18266906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档