Python oracle數(shù)據(jù)庫操作時(shí),中文查詢報(bào)錯(cuò)
python中使用oracle數(shù)據(jù)庫進(jìn)行查詢時(shí),出現(xiàn)下面的錯(cuò)誤:
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 54-57: ordinal not in range(128)
錯(cuò)誤定位是在cur.execute(sql)進(jìn)行查詢的這句。
因?yàn)樘崾揪幋a問題,一直在折騰編碼,各種斷點(diǎn)加下來,其實(shí)語句本身并沒有發(fā)生亂碼,而且因?yàn)槭褂玫膒ython3.x,默認(rèn)已經(jīng)是utf-8編碼,不該出現(xiàn)這樣的問題啊。。
各種查,把網(wǎng)上各種改編碼的方法試了一下遍。。
***發(fā)現(xiàn)搜索方式不對(duì)..***的***終于找到了,是oracle的一個(gè)環(huán)境變量沒有配。
windows下可以參考:
添加變量名:NLS_LANG
添加變量值:SIMPLIFIED CHINESE_CHINA.UTF8
Mac下可以直接在數(shù)據(jù)庫操作的文件頂部添加,給oracle設(shè)置字符集。
- import os
- os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
大功告成??!