Задать вопрос
@Nodar
Python, Ruby, JavaScript

Как решить проблему с кодировкой Rails 4, Mysql?

Помогите разобраться, стек Rails 4.1.6, использую gem mysql2.
В существующую таблицу добавил 2 поля, name, email.

Результат SHOW FULL COLUMNS FROM feedbacks;
name | varchar(255) | utf8_general_ci |
email | varchar(255) | utf8_general_ci

Имя если оно указано русскими буквами трансформируется в - %D0%9D%D0%BE%D0%B4%D0%B0%D1%80%D0%B8 подобное.

В этой же таблице есть поле типа text, у которого кодировка та же. Оно нармально сохраняет русские буквы.

Логи с рельсов:

Parameters: {"{\"user_id\":\"1\",\"name\":\"АБВ\",\"email\":\"mike@outofcloud.ru\",\"answer\":\"5\",\"comment\":\"цувцув\"}"=>nil}

SQL (23.3ms) INSERT INTO "feedbacks" ("answer", "code", "comment", "created_at", "email", "name", "updated_at", "user_id") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id" [["answer", 5], ["code", 1], ["comment", "цувцув"], ["created_at", "2015-05-13 08:54:22.047321"], ["email", "example@example.ru"], ["name", "%D0%90%D0%91%D0%92"], ["updated_at", "2015-05-13 08:54:22.047321"], ["user_id", "1"]]

Сносить базу и восстанавливать (как я читал, это может спасти) не очень-то хочется.
Есть ли простое решение данной проблемы?
  • Вопрос задан
  • 371 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
HollowJ
@HollowJ
PHP разработчик
Напрямую в базу пробовали добавлять данные с кириллическими символами?
Если нет и данные вставятся корректно, то дело не в БД, а в том что рельсы делают для этого свойства преобразование кириллицы.
С рельсами почти не знаком, ну с MySQL работал достаточно, могу почти с уверенностью сказать что не в БД проблема, так как БД не делает перекодировку (разве что сам драйвер).
Ответ написан
@Nodar Автор вопроса
Python, Ruby, JavaScript
В database.yml кодировка прописана
Ответ написан
Комментировать
@kir_vesp
Web Developer
Возможно надо у самого мускуля в настройках на серваке исправить дефолтную кодировку на обычную utf-8, тогда должно всё заработать(вчера была похожая проблема, решилось сменой базовой кодировки).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы