Sequel Rails 带有 Snowflake 的 ODBC returns '\x1A' 用于特殊字符
Sequel Rails ODBC with Snowflake returns '\x1A' for special characters
所以我使用 Docker 到 运行 一个 Rails 应用程序,它使用 Sequel 通过 ODBC (snowflake-odbc-2.22.4.x86_64.deb
) 连接到 Snowflake。我可以连接到我的 Snowflake 实例并查询 table 很好,但我目前 运行 遇到一个问题,其中任何特殊字符都是 return \x1A
的性格。
例如,如果在 Snowflake 中我有这个 table (User
):
|名字|
|-|
|яйяйяй|
运行 Rails 中的查询:
SELECT fname FROM User
returns
[{
:fname => "\x1A\x1A\x1A\x1A\x1A\x1A"
}]
其中每个特殊字符有 1 个 \x1A
做 data[:fname].encoding
returns ASCII-8BIT
和 data[:fname].force_encoding('UTF-8')
returns 一个空字符串。
我用 python 和雪花连接器做了一个类似的查询,它工作正常,所以这让我觉得我的 sequel 配置和 reading/saving 可能有问题雪花的回应。
我尝试将 :encoding => "utf8"
添加到我的 Sequel.odbc(:drvconnect=> SNOWFLAKE_CONN_STR, :encoding => "utf8")
,但这并没有改变任何东西。
提前致谢!
尝试设置以下环境变量:
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US.UTF-8
我们在 Dockerfile 中有这个。
所以我使用 Docker 到 运行 一个 Rails 应用程序,它使用 Sequel 通过 ODBC (snowflake-odbc-2.22.4.x86_64.deb
) 连接到 Snowflake。我可以连接到我的 Snowflake 实例并查询 table 很好,但我目前 运行 遇到一个问题,其中任何特殊字符都是 return \x1A
的性格。
例如,如果在 Snowflake 中我有这个 table (User
):
|名字|
|-|
|яйяйяй|
运行 Rails 中的查询:
SELECT fname FROM User
returns
[{
:fname => "\x1A\x1A\x1A\x1A\x1A\x1A"
}]
其中每个特殊字符有 1 个 \x1A
做 data[:fname].encoding
returns ASCII-8BIT
和 data[:fname].force_encoding('UTF-8')
returns 一个空字符串。
我用 python 和雪花连接器做了一个类似的查询,它工作正常,所以这让我觉得我的 sequel 配置和 reading/saving 可能有问题雪花的回应。
我尝试将 :encoding => "utf8"
添加到我的 Sequel.odbc(:drvconnect=> SNOWFLAKE_CONN_STR, :encoding => "utf8")
,但这并没有改变任何东西。
提前致谢!
尝试设置以下环境变量:
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US.UTF-8
我们在 Dockerfile 中有这个。