cx_Oracle在US7ASCII编码如何正常使用中文字符?

新手上路,请多包涵

问题描述

在开发过程中使用cx_Oracle对设置为us7ascii字符集的ORACLE数据库进行访问时,发现查询条件不能包含中文字符且查询输出也没办法正常显示中文

代码及数据表样本

数据表样本:

no name status date
1 apple 已上架 20171203
2 pear 已上架 20171203
3 banana 已售磬 20171203

代码

# -*- coding:utf-8 -*-
import sys
import os
import cx_Oracle
ip=''
port=''
tnsname=''
os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.US7ASCII'
str_dsn = cx_Oracle.makedsn(ip,port,tnsname)
conn = cx_Oracle.connect(user='123',password='123',dsn=str_dsn)
cur = conn.cursor()
data = cur.execute("select status from YW_DATA where date like '20171203'")
res = data.fetchone()[0] #报错位置
print(one)

报错信息

    data.fetchone()[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb5 in position 0: ordinal not in range(128)

期间我已根据度娘的解决方法修改NLS_LANG为ZHS16GBK,UTF8等编码都没有办法正常读取,请问大牛们有什么方法可以解决这个问题?

阅读 5.5k
2 个回答

Image手机版不好打字,只好把自己的文档截图了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题