У меня проблемы с подключением к устаревшей базе данных в 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`