что использовать latin1 или utf8 для рельсов 3 и ruby ​​1.8.7 - PullRequest
0 голосов
/ 14 июня 2011

Я обнаружил, что utf-8 является стандартом, но Mysql не полностью поддерживает utf-8 (4 байта).

Теперь вот моя ситуация.Мои переменные сопоставления mysql показывают latin1, но механизм кодирования в "database.yml" (rails) - utf8.

У меня есть база данных с примерно 20 таблицами и около 1k строк в каждой таблице.Я использую Mysql 5.0, ruby ​​1.8.7 и rails 3.

Я хотел бы поддержать хотя бы несколько непечатных чартеров.Что было бы лучшим вариантом?

  1. Должен ли я изменить всю базу данных на utf-8 (конвертация болезненна, а также mysql полностью не поддерживает utf-8).
  2. СледуетЯ изменил механизм кодирования в "database.yml" на latin1 (будет ли новый параметр совместим со старыми данными, которые уже сохранены).
  3. Есть ли другое решение?

Спасибо.

1 Ответ

1 голос
/ 14 июня 2011

Я думаю, что поле: encoding в database.yml это то, что используется при создании новой базы данных.

Приложение не сломается, если вы измените это поле

(на самом деле я думаю, что это ничего не даст, если вы не используете rake db:create)

Я предлагаю, если ваше приложение предназначено для кого-либо за пределами США или Западной Европы Вы должны использовать utf8. Я нахожу удивительным, что Ubuntu по-прежнему поставляется по умолчанию с именем latin1.

Это может быть "оптимизировано" для пространства но создает проблемы практически для всех, у кого есть клиентский сайт.

В Google есть разные ссылки о том, как конвертировать вашу базу данных в UTF8. http://www.devcha.com/2008/03/convert-existing-mysql-database-from.html

что-то вроде

/* convert the default character set (used for new tables) */
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

/* convert a specific table */
ALTER TABLE db_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

конечно ....

всегда выполняйте резервное копирование ваших данных и сначала попробуйте их на промежуточной машине

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