Две модели, одна показывает акцентированный характер, другая показывает? - PullRequest
0 голосов
/ 26 апреля 2011

Использование RoR 2.3.8.

У меня есть две модели. Странно, что когда я набираю текст и сохраняю его в модели A, он показывает точный текст, но когда я делаю это в модели B, он показывает ???. Скорее всего, один поддерживает UTF-8, а другой нет. Дело в том, что я не помню, чтобы я их ставил. Что я могу сделать, чтобы это исправить?

Использование Mac OS 10.6.7, Chrome

1 Ответ

0 голосов
/ 26 апреля 2011

MySQL и другие движки баз данных устанавливают кодировку, используемую для текста, на нескольких уровнях: сервер, база данных, таблица и столбец.Обычно значения по умолчанию применяются сверху вниз, от сервера к базе данных, от базы данных к таблице и т. Д., Но они могут быть настроены в любой точке в соответствии с требованиями.Иногда это происходит непреднамеренно и может вызвать проблемы.

Один из способов узнать, какая кодировка активна в настоящее время, - это использовать клиент типа Sequel Pro , который предоставит вам эту информацию, или исследовать использованиеинструмент командной строки mysql:

SHOW CREATE DATABASE example;

Вы получите ответ, который содержит что-то вроде этого:

CREATE DATABASE `example` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */

В данном случае это таблица UTF-8 с UTF-8 UNICODEсверка.Кодировка определяет, как хранятся данные, а параметры сортировки определяют, как обрабатывать сортировку и преобразование регистра.

При дальнейшем исследовании вы можете изучить таблицу и столбцы:

SHOW CREATE TABLE example;

Это дает гораздо большеподробно, что-то вроде этого:

CREATE TABLE `example` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `index_example_on_email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

В этом случае для самой таблицы по умолчанию используется UTF-8, а столбец электронной почты также помечается.У вас может быть другой столбец.

Если вам нужно изменить кодировку или параметры сортировки, вы можете использовать оператор ALTER TABLE для этого.

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