Python利用 cx_Oracle操作数据报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 157-1

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
   Python利用 cx_Oracle操作数据报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 157-1
如果是Linux下,配置环境变量(设置完要重启系统):
    编辑 vi /etc/profile 文件,在文件末尾增加,导入环境变量
    export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

Python利用 cx_Oracle操作数据报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 157-1