带有雪花的 Sequel Rails ODBC 为特殊字符返回 '\x1A'

问题描述

所以我使用 Docker 运行 Rails 应用程序,该应用程序使用 Sequel 通过 ODBC (sNowflake-odbc-2.22.4.x86_64.deb) 连接到 SNowflake。我可以很好地连接到我的 SNowflake 实例和查询表,但我目前遇到了一个问题,即任何特殊字符都返回 \x1A 而不是字符。 例如,如果在雪花中我有这个表 (User): |名称| |-| |яйяйяй|

在 Rails 中运行这个查询SELECT fname FROM User

返回

[{
:fname => "\x1A\x1A\x1A\x1A\x1A\x1A"
}]

每个特殊字符有 1 个 \x1A

执行 data[:fname].encoding 返回 ASCII-8BITdata[:fname].force_encoding('UTF-8') 返回空字符串。

我用 python 和雪花连接器做了一个类似的查询,它工作得很好,所以这让我觉得我的续集配置和读取/保存雪花的响应可能有问题。

我尝试将 :encoding => "utf8" 添加到我的 Sequel.odbc(:drvconnect=> SNowFLAKE_CONN_STR,:encoding => "utf8") 中,但这没有任何改变。

提前致谢!

解决方法

尝试设置以下环境变量:

ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US.UTF-8

我们在 Dockerfile 中有这个。