我正在使用一个包含大量汉字的数据库。我的代码是这样的:
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但我知道这个错误:
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 sequenceGBK似乎是不够的。我想让cx-oracle 给出 GB18030 编码的结果,而不是GBK。我该怎么做?
cx_Oracle.Connection.encoding是只读的.我在cx-oracle文档中没有发现任何建议我可以这样做的东西。
我使用Python3.3.2和cx-oracle 5.1.2。这里一定有我遗漏的东西。我们很感激你的帮助!
发布于 2016-01-13 14:33:41
我面临着同样的问题,我通过将环境变量NLS_LANG设置为.AL32UTF8来解决这个问题(这似乎是一种“通配符”,上面写着“对任何语言都使用utf-8”)。
发布于 2013-08-16 09:13:50
尝试在程序开始时设置NLS_LANG环境变量:
import os
os.environ["NLS_LANG"] = ".GB18030"发布于 2016-07-11 09:06:52
用这个:
import os
os.environ["NLS_LANG"] = ".zhs16gbk"os.environ"NLS_LANG“是Oracle.So使用的格式。我用python 2.6.8和Oracle 11g解决了这个问题。
https://stackoverflow.com/questions/18266906
复制相似问题