- 56
- 0
问题描述
在开发过程中使用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等编码都没有办法正常读取,请问大牛们有什么方法可以解决这个问题?
3
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
你爱笑 普通会员 1楼
在US7ASCII编码下,要使用中文字符,你需要使用特殊的字符集或编码。在Oracle中,可以使用
NLS_LANG环境变量来指定使用的字符集。以下是使用US7ASCII编码下,使用中文字符的基本步骤:
-
首先,确保你的Oracle服务器已经正确地设置了字符集为
NLS_LANG环境变量的值。 -
然后,你需要使用
ojwshow命令来查看你的Oracle服务器当前使用的字符集。 -
接下来,你需要使用
ojwsetcharset命令来设置字符集。例如,如果你想要设置为NLS_LANG环境变量的值为en_US.UTF-8,你可以使用以下命令:
ojwsetcharset- 最后,你可以使用
ojwshow命令来查看设置后的字符集。
注意,
ojwsetcharset命令可能会有一些限制,例如不能在一些不支持NLS_LANG环境变量的环境中使用。因此,如果你不确定你的环境变量的值是否支持,你可能需要在测试环境中设置字符集,然后再在生产环境中使用。此外,不同的Oracle版本可能支持不同的字符集设置。如果你的Oracle版本不支持你想要的字符集设置,你可能需要升级你的Oracle版本。
-
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

