首页 > 解决方案 > Robotframework 的数据库库在西里尔字符的情况下返回问号 (?) 而不是实际字符

问题描述

我使用 robotsframework-databaselibrary 的 Query 方法查询 Oracle 数据库。结果包含问号 (?) 而不是西里尔字符的实际字符。如果我使用 SQL Developer 运行相同的查询,结果很好。DB 中的字符编码为CL8MSWIN1251

在返回之前,我尝试使用 Oracle 的 CONVERT 函数将结果转换为CL8MSWIN1251。像这样

convert(b.surname,'CL8MSWIN1251') AS surname

我尝试使用 Decode String to Bytes 在机器人框架中解码结果字符串,但它不支持上述编码。

@{queryResults}=    Query   ${sqlQuery}
Log List    ${queryResults}

我希望输出是一些西里尔字符,实际结果是这样的??????

标签: databaseoraclerobotframework

解决方案


@kfinity 评论帮助我解决了这个问题。

我必须将NLS_LANG环境变量设置为RUSSIAN_CIS.CL8MSWIN1251。这解决了查询返回问号的问题。在此之后,我使用以下代码将字节转换为适当的字符

 ${string}=  Decode Bytes To String  ${bytes}    windows-1251

推荐阅读