7

多くの漢字を含むデータベースを扱っています。私のコードは次のようになります。

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 sequence

GBK足りないようです。の代わりに、エンコードされた結果を提供したいと思いcx-oracleGB18030GBKます。どうすればいいですか?

cx_Oracle.Connection.encodingcx-oracle読み取り専用です...これを実行できることを示唆するドキュメントは見つかりませんでした。

私は Python 3.3.2 とcx-oracle5.1.2 を使用しています。私がここで見逃しているものがあるに違いありません。助けていただければ幸いです。

4

3 に答える 3

1

プログラムの最初に NLS_LANG 環境変数を設定してみてください。

import os
os.environ["NLS_LANG"] = ".GB18030"
于 2013-08-16T09:13:50.233 に答える
0

これを使って:

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

os.environ["NLS_LANG"] は Oracle 用です。したがって、Oracle の形式を使用します。私はpython 2.6.8とOracle 11gでこれを解決しました。

于 2016-07-11T09:06:52.043 に答える