Подтвердить что ты не робот

Сиквел никогда не возвращает utf-8, просто ascii-8bit

Существует база данных mysql, к которой я пытаюсь подключиться. DataMapper извлекает все хорошо в UTF-8, но Sequel всегда возвращает строки в ASCII-8 бит, который создает ошибки с .to_json.

Я попробовал несколько вещей, чтобы заставить его работать.

Encoding.default_external = Encoding::UTF_8  
Encoding.default_internal = Encoding::UTF_8  
DB.run 'set names utf8'  
Sequel.mysql 'db', (...), :encoding => 'utf-8'  

У меня есть драгоценные камни: mysql (2.9.0) (проверено без), mysql2 (0.3.11) и сиквел (3.42.0)

Единственное, что работает, - это принудительное кодирование вручную для каждой строки, которая МНОГО меньше, чем идеальная.

4b9b3361

Ответ 1

Попробуйте Sequel.mysql2 вместо Sequel.mysql. Sequel.mysql использует старый mysql драйвер вместо нового mysql2 драйвера, и я не верю, что драйвер mysql поддерживает кодировки.

Ответ 2

Кодирование может быть передано как:

Sequel.connect("mysql2://user:[email protected]/the_database?encoding=utf8")