使用activerecord-sqlserver-adapter编码:: UndefinedConversionError

时间:2012-03-12 01:38:12

标签: sql-server ruby-on-rails-3

连接到SQL Server中的旧数据库时遇到问题。当读取带有特殊字符的字符串并尝试将其插入另一个数据库(开发中的sqlite)时会出现问题,这会引发以下错误:

Encoding::UndefinedConversionError: "\xC3" from ASCII-8BIT to UTF-8

数据库具有类似latin1的排序规则。我在freetds.conf文件中设置了client charset = UTF-8,我的database.yml文件中有encoding: utf8

实际上似乎freetds驱动程序正在进行正确的转换,但由于某种原因,ruby库没有意识到它,因为有问题的字符串是ESPA\xC3\x91A,它实际上是{{1}的正确二进制表示因此,在字符串上调用ESPAÑA会使错误消失。

作为补充说明,当我将字符串分配给其他模型时,它会给我以下消息:

force_encoding('UTF-8')

1 个答案:

答案 0 :(得分:0)

使用https://github.com/rails-sqlserver/tiny_tds解决了我在ODBC驱动程序中遇到的这个问题和其他问题。