Encoding :: UndefinedConversionError с помощью activerecord-sqlserver-adapter - PullRequest
0 голосов
/ 12 марта 2012

У меня проблемы с подключением к устаревшей базе данных в SQL Server. Проблема возникает, когда читаете строку со специальными символами и пытаетесь вставить ее в другую базу данных (sqlite в разработке), что выдает мне следующую ошибку:

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

В базе данных есть сортировка, подобная латинице1. Я установил client charset = UTF-8 в моем файле freetds.conf, и у меня есть encoding: utf8 в моем файле database.yml.

На самом деле кажется, что драйвер freetds делает правильное преобразование, но по какой-то причине библиотека ruby ​​не знает об этом, потому что проблемная строка - ESPA\xC3\x91A, которая на самом деле является правильным двоичным представлением для ESPAÑA, поэтому вызов force_encoding('UTF-8') в строке приводит к исчезновению ошибки.

В качестве дополнительного примечания, когда я присваиваю строку другой модели, она дает мне следующее сообщение:

Binary data inserted for `string` type on column `email`

1 Ответ

0 голосов
/ 12 марта 2012

Использование https://github.com/rails-sqlserver/tiny_tds решило эту и другие проблемы, возникшие у меня с драйвером ODBC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...