問題描述:
寫了一個執行sql的模塊,引用了cx_oracle,在windows機器上完美運行,移植到Centos上就會報錯,
UnicodeEncodeError: 'ascii' codec can't encode characters in position
檢查過程:
代碼編碼為utf-8,print編碼為utf-8,文件編碼為utf-8,服務器編碼為utf-8,各種正常
定位代碼報錯位置,開始懷疑是sql執行成功,返回值有中文報錯,但是后來通過觀察,是傳入sql,並沒有執行成功,執行的過程中就報錯了。
最后只能各種百度,各種嘗試,發現如下解決辦法:
解決方法:
在你執行sql的代碼前加上如下代碼:
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
如果是用的django,也可以將這段代碼放進每個app的admin.py中,就會全局生效(未測試。按理說是可以的)
