oracle mysql us7acsii_求救使用cx_oracle获取字符集为US7ASCII的数据库中的中文时乱码...

近期在使用cx_oracle获取字符集为US7ASCII的数据库中的中文时乱码def getdata(lang):

os.environ['NLS_LANG'] = lang

userpwd = "ustest"

dsn =cx_Oracle.makedsn("192.168.159.130",1521,sid="ustest")

connection = cx_Oracle.connect("ustest",userpwd,dsn,encoding='US-ASCII',nencoding = "US-ASCII")

cursor = connection.cursor()

sql = """select name from students"""

cursor.execute(sql)

Datas=cursor.fetchall()

name=Datas[-1][0]

setp1 = name.encode('unicode_escape').decode('gb2312')

print('setp1%s'%setp1)

t = type(name)

print(Datas)

print(name ,t)

cursor.close()

connection.close()

if __name__ == "__main__":

getdata(lang='AMERICAN_AMERICA.US7ASCII')

如果按上面的代码执行时会报Datas=cursor.fetchall()UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)

如果将encoding='US-ASCII',nencoding = "US-ASCII"改为utf-8则中文乱码

setp1\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd

[('???',), ('??',), ('3F3F',), ('������',)]

������

改成gbk,ISO-8859-1也一样

这里的nls_lang也与服务器端设置的一致。求大佬帮忙

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值