美文网首页
RobotframeWork查询oracle带中文的异常问题

RobotframeWork查询oracle带中文的异常问题

作者: 牛小方 | 来源:发表于2018-08-14 18:02 被阅读0次

    问题一: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]}

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

    相关文章

      网友评论

          本文标题:RobotframeWork查询oracle带中文的异常问题

          本文链接:https://www.haomeiwen.com/subject/xdsvbftx.html