cx_Oracle查询希伯来字符显示为???的问题求助
希伯来字符查询显示???的解决办法
检查Oracle客户端字符集环境变量
- 查看当前
NLS_LANG配置:执行echo $NLS_LANG,需确保值为与数据库匹配的UTF-8类字符集,比如AMERICAN_AMERICA.AL32UTF8或HEBREW_ISRAEL.AL32UTF8。 - 临时修改:执行
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8;永久生效则将该命令写入~/.bashrc或/etc/profile文件,重启终端后生效。
完善cx_Oracle连接配置
- 除
encoding='UTF-8'外,需额外指定nencoding='UTF-8',覆盖Oracle国家字符集配置,示例代码:import cx_Oracle # 替换为实际的数据库连接信息 connection = cx_Oracle.connect( "your_username", "your_password", "your_host:your_port/your_service", encoding="UTF-8", nencoding="UTF-8" )
确认系统终端字符集
- 执行
echo $LANG,检查输出是否包含UTF-8(如en_US.UTF-8、he_IL.UTF-8)。 - 若不匹配,编辑
/etc/locale.conf文件,添加或修改LANG=en_US.UTF-8,执行source /etc/locale.conf使设置生效。
确保Python输出编码正确
- 若终端编码正常但仍显示乱码,可在代码中强制指定标准输出编码:
import sys # 强制设置标准输出为UTF-8 sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf-8', buffering=1)
内容的提问来源于stack exchange,提问作者Tsvi Tenenbaum
相关产品推荐
相关产品推荐

