Python 利用cx_Oracle查询中文的时候显示乱码或插入数据的时候提示编码不对,报错如下:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 157-159: ordinal not in range(128)
解决方法如下:
第一步:先检查python的编码是什么格式:
import sys
print(sys.getdefaultencoding())
#
输出
utf8
第二步:查看oracle数据库编码是否也是utf-8
select
userenv
(
'language'
)
from
dual
;
#
输出结果是 AMERICAN_AMERICA.AL32UTF8
第三步:设置客户机的编码环境:
如果是在windows下
设置环境变量
:
NLS_LANG
设置值为
:
AMERICAN_AMERICA.AL32UTF8
如果是Linux下,配置环境变量(设置完要重启系统):
编辑 vi /etc/profile 文件,在文件末尾增加,导入环境变量
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8