连接到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')