問題一:SQL語句中含有中文報(bào)錯(cuò)--UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-15: ordinal not in range
問題描述:
RobotframeWork在使用oracle過程中遇到了SQL語句中含有中文的情況
運(yùn)行時(shí)卻報(bào)錯(cuò)
解決辦法:
在Python2.7.12\Lib\site-packages文件夾下下新建一個(gè)文件sitecustomize.py 內(nèi)容如下:
# -*- coding: utf-8 -*-
import sys
import os
import cx_Oracle
reload(sys)
sys.setdefaultencoding('utf-8')
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
保存后重新啟動RobotframeWork劲厌,報(bào)錯(cuò)沒有了熊昌,可以正常從數(shù)據(jù)庫查詢到值并賦值給變量
問題二:RobotframeWork查詢數(shù)據(jù)庫返回的中文值賦值給變量后顯示為亂碼
問題描述:
在上面問題一解決后,緊接著發(fā)現(xiàn)雖然可以正常查詢并賦值,但變量的值卻無法正常顯示中文而是亂碼${a} = [(u'\u81ea\u52a8\u5316\u6d4b\u8bd5',)]
解決辦法:
1军掂、首先要增加一個(gè)轉(zhuǎn)碼的關(guān)鍵字,在Python2.7.12\Lib\site-packages\DatabaseLibrary文件夾下找到query.py文件缴川,并在里面增加一段代碼內(nèi)容如下:
def decode(self, code):
??? return code.decode('utf-8')
盡量不要把代碼放在文件最后党远,我試過放在最后卻不能編譯通過
2、第二步要敲黑板了营勤,是很關(guān)鍵的一步灵嫌,由于手動改了query.py與之前的query.pyc文件不一致,使得RobotframeWork中的關(guān)鍵詞都失效了葛作,所以必須手動將query.py文件編譯一下才行寿羞。編譯過程這里不贅述,用Python編譯器打開query.py文件run一下
3赂蠢、通過第二步編譯后绪穆,RobotframeWork又重新識別了關(guān)鍵詞,這個(gè)時(shí)候要用第一步定義的關(guān)鍵詞將變量轉(zhuǎn)換一下虱岂,增加語句${CONTENT} decode ${a[0][0]}
此時(shí)玖院,已能正常顯示中文了