database - 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}
我希望输出是一些西里尔字符,实际结果是这样的??????
解决方案
@kfinity 评论帮助我解决了这个问题。
我必须将NLS_LANG环境变量设置为RUSSIAN_CIS.CL8MSWIN1251。这解决了查询返回问号的问题。在此之后,我使用以下代码将字节转换为适当的字符
${string}= Decode Bytes To String ${bytes} windows-1251
推荐阅读
- sql - 使用“CONNECT BY 级别”将 oracle Sql 转换为 postgresql
- iframe - 为什么不剥离 x-frame 选项允许我在此扩展中加载跨站点 iframe?
- sql-server - ALTER TABLE 失败,因为一个或多个对象访问此列。运行 NOCHECK CONSTRAINT ALL 后
- visual-studio - SSIS 数据流:聚合任务“隐藏”我下游的其他列
- plugins - Minecraft Spigot:注册命令时出现空指针错误
- visual-studio-code - 当我应该收到错误消息时,为什么终端会崩溃?
- javascript - JavaScript:从一种嵌套 JSON 格式转换为另一种嵌套 JSON 格式
- asp.net - 如何在 Kestrel 进程中每天运行异步任务?
- javascript - 尝试将行记录为唯一或按 ID 列复制
- r - 如何获取每个几何线的标签