鍍金池/ 問答/Python  數(shù)據(jù)庫/ cx_Oracle在US7ASCII編碼如何正常使用中文字符?

cx_Oracle在US7ASCII編碼如何正常使用中文字符?

問題描述

在開發(fā)過程中使用cx_Oracle對設置為us7ascii字符集的ORACLE數(shù)據(jù)庫進行訪問時,發(fā)現(xiàn)查詢條件不能包含中文字符且查詢輸出也沒辦法正常顯示中文

代碼及數(shù)據(jù)表樣本

數(shù)據(jù)表樣本:

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)

期間我已根據(jù)度娘的解決方法修改NLS_LANG為ZHS16GBK,UTF8等編碼都沒有辦法正常讀取,請問大牛們有什么方法可以解決這個問題?

回答
編輯回答
蟲児飛

Image手機版不好打字,只好把自己的文檔截圖了

2018年6月19日 15:51