cx_Oracle,cursor.execute(sql) 执行的时候编码错误:UnicodeEncodeError: 'ascii' codec can't encode character

用python连接Oracle,执行sql的时候如果条件有中文或者查询结果有中文,就会乱码,或者直接报错:

UnicodeEncodeError: 'ascii' codec can't encode character

一直以为是自己编码问题,,,,,,,,,,

其实不是,是oracle客户端的字符编码设置不对。

编写的python脚本中需要加入如下几句:
import os

os.environ["NLS_LANG"] = ".AL32UTF8"

或者

import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

这样可以保证select出来的中文显示没有问题。

要能够正常的insert和update中文,还需要指定python源文件的字符集密码和oracle一致。

# -*- coding: utf-8 -*-

你可能感兴趣的:(python)