问题描述
所以我使用 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-8BIT
和 data[: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 中有这个。