Rails 4.1.4 приложению с Ruby 2.3.0
пришлось неожиданно переместить приложение на другой хост.Я боролся с этой ошибкой в течение нескольких дней и не уверен, почему она возникла на новом сервере.Я получаю сообщение об ошибке в этой строке кода
render json: { :result => cust_setup }, status: 200
cust_setup - это данные, возвращаемые из базы данных MySQL.Изменение кодировки на UTF8 не помогло.Пробовал несколько разных способов вывести это с тем же результатом.Не уверен, что с этим делать.
Редактировать: Одна вещь, которую я обнаружил во время моих поисков здесь, это то, что мы перешли от mysql2 к драгоценному камню mysql, так как не могли получить драгоценный камень mysql2работать.Драгоценный камень mysql, по-видимому, является виновником изменения вещей в ASCII-8BIT.
Edit 2: В сочетании с вышеизложенным в этой таблице есть 1 поле с испанским языком.Если я уберу это, ошибка исчезнет.Итак, это специальные символы в испанском тексте в сочетании с переходом на самоцвет MySQL.Я не уверен, что мне нужно сделать, чтобы решить эту проблему в данный момент.
Редактировать 3: Я попытался вернуться к гему mysql2, запустил его, все еще выдает ту же ошибку.
Редактировать 4: добавлен геттер в модель для конкретного поля.кодировка работает в модели, если я укажу ее в определенном поле.У меня есть это сейчас:
self[:sp_legal].force_encoding("UTF-8").encode("ASCII-8BIT")
, который выбрасывает эту ошибку
Encoding::InvalidByteSequenceError ("\xF3" followed by "n" on UTF-8):
Редактировать 5: У меня естьэто работает на данный момент.Мне не нравится способ, которым я должен был это делать, он удаляет символы, он не знает, что делать, поэтому не уверен, что получу время от времени, но он работает.вот мой последний получатель
self[:sp_legal].force_encoding("UTF-8").encode("ASCII-8BIT", invalid: :replace, undef: :replace)