RF查询oracle带中文的sql报UnicodeEncodeError问题

问题一:SQL语句中含有中文报错--UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-15: ordinal not in range问题描述:RobotframeWork在使用oracle过程中遇到了SQL语句中含有中文的情况

                                        
运行时却报错

                                        
解决办法:在Python2.7.12\Lib\site-packages文件夹下下新建一个文件sitecustomize.py 内容如下:
# -*- 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,报错没有了,可以正常从数据库查询到值并赋值给变量
问题二:RobotframeWork查询数据库返回的中文值赋值给变量后显示为乱码问题描述:在上面问题一解决后,紧接着发现虽然可以正常查询并赋值,但变量的值却无法正常显示中文而是乱码${a} = [(u'\u81ea\u52a8\u5316\u6d4b\u8bd5',)]

                                        
解决办法:1、首先要增加一个转码的关键字,在Python2.7.12\Lib\site-packages\DatabaseLibrary文件夹下找到query.py文件,并在里面增加一段代码内容如下:
def decode(self, code):
    return code.decode('utf-8')

                                        
尽量不要把代码放在文件最后,我试过放在最后却不能编译通过2、第二步要敲黑板了,是很关键的一步,由于手动改了query.py与之前的query.pyc文件不一致,使得RobotframeWork中的关键词都失效了,所以必须手动将query.py文件编译一下才行。编译过程这里不赘述,用Python编译器打开query.py文件run一下3、通过第二步编译后,RobotframeWork又重新识别了关键词,这个时候要用第一步定义的关键词将变量转换一下,增加语句${CONTENT} decode ${a[0][0]}

                                        
此时,已能正常显示中文了


作者:牛小方
链接:https://www.jianshu.com/p/faf658ed60d0
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值