python3 UnicodeEncodeError錯誤,cx_oracle模塊執行sql報錯:UnicodeEncodeError: 'ascii' codec can't encode characters in position


問題描述:

  寫了一個執行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中,就會全局生效(未測試。按理說是可以的)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM