1

我正在使用 SQL Server 2008 R2 作为数据库在 Ruby 3.0 中的 MacOS 上开发应用程序。我正在通过 freetds 和 tiny_tds 进行连接。

当我使用扩展字符(如 ÞþÆæÓó)通过支架保存数据时,它工作正常,在 SQL Server Management Studio 中查看数据时字母是正确的,当我将数据读回 Rails UI 时,它显示正确。

当我在 Linux 机器上部署应用程序时,该机器也使用 freetds 和 tiny_tds 连接到同一个数据库,我得到 UI 中的字符乱码。当我通过 Linux 服务器保存数据时,字符在浏览器中正确显示,但在 SSMS 中查看数据时,字符已被编码且不可读(我输入 ÞÞðð)并在 SSMS 中获取:

ÞÞðð

这是我从 Linux 服务器的浏览器中获取的,用于从 Mac 写入数据库的 Suðurnes:

Su�urnes

我在 database.yml 中设置了这一行:

encoding: utf8

它没有改变任何东西。我还在 freetds.conf 文件中设置了这一行:

client charset = UTF-8

SQL 数据库有 Icelandic_CI_AS 作为 CODEPAGE 但我很确定这不是问题,因为它在 Mac 机器上正常工作。

我已经在Passenger apache 和WEBrick 上对此进行了测试,所以我不认为是apache 导致了这种情况。

那么我必须更改 Linux 上的任何设置以使其行为方式与 mac 相似吗?

基本上,在 Web 服务器和数据库之间有一些东西来回转换值。

编辑: *当我使用 tsql 命令行工具查询数据库时,我得到了正确的文本编码。所以据我了解,这是路径:Web Client > Apache > Rails app > Tiny_tds > Freetds > SQL Server 所以问题一定出在 Apache 站点或 rails 应用程序本身。实际上,如果我使用 Apache 或 WebBrick 并不重要,所以我对问题所在感到困惑。有任何想法吗?*

问候,约翰

4

1 回答 1

1

问题是文件 freetds.conf 指定了导致问​​题的编码。我还必须确保文件 database.yml 没有指定编码。

于 2011-09-11T16:04:59.620 回答