前提:
1.不是所有机子都会中文出问题
2.python封装exe 使用的 pyinstaller
3.开发环境执行sql及生成的exe没问题
环境信息:
python3.7
cx_Oracle 7.1.3
Windows7
本机用py文件执行和exe执行均无问题
拷贝到其他机子上,由于没有oracle环境,需要用到instantclient,我的cx_Oracle版本是7.1.3,所以instantclient版本用了18 ,这个不重要,按照官网指导配就行了,
第一次执行提示unicodedecode error ,原因是生成exe之后,虽然标本写的coding:utf8 但是还是会以当前主机系统编码为主,所以在sql语句的字符串后面要编码gbk
例如:sqlCode = """ select * from 中文表名 """.encode("gbk")
这下就不报编码问题了
接下来oracle会报错
ORA-00911: invalid character
不识别中文
解决方案:加环境变量
python生成exe后,在某些机子上用instantclient操作oracle,sql带中文不识别
原文:https://www.cnblogs.com/ypx-blackice/p/11476998.html