MySQL неправильно хранит иностранные символы - PullRequest
3 голосов
/ 23 мая 2010

При использовании SQLite это работает нормально. Однако, когда я переключаюсь на MySQL, вместо クイン я получаю ???. Это столбец TEXT или иногда VARCHAR (255) (в данном случае я считаю его VARCHAR (255)).

Как мне заставить MySQL правильно сохранить эти символы?

Ответы [ 2 ]

6 голосов
/ 23 мая 2010

Для наборов символов таблицы / столбца должна быть установлена ​​версия, поддерживающая многобайтовую кодировку, например UTF8.

Вы можете узнать текущий набор символов таблицы, выполнив команду

mysql> SHOW CREATE TABLE tbl_Name;

Он может ничего не показывать, и в этом случае он использует значение по умолчанию, определенное в вас my.cnf

Чтобы изменить набор символов при запуске таблицы:

mysql> ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Я не рекомендую этоесли у вас много данных или вы не можете удалить данные и начать все сначала.Переход должен сначала удалить неверные данные.

Я прочитал этот пост, и он кажется мне более глубоким и насколько я могу вспомнить мои собственные сражения с этой очень точной информацией.http://www.oreillynet.com/onlamp/blog/2006/01/turning_mysql_data_in_latin1_t.html

Кроме того, для создания новых таблиц в виде UTF-8 добавьте CHARACTER SET utf8 COLLATE utf8_general_ci в конец ваших CREATE TABLE операторов

2 голосов
/ 23 мая 2010

Убедитесь, что вы указали "charset = utf8" в строке подключения. Например

connectionString="Server=myServerHost;charset=UTF8;Database=myDatabase;Uid=root;Pwd=password;"

Как отмечено в Наборы символов и общие параметры сортировки MySQL может делать:

  • Хранить строки, используя различные наборы символов
  • Сравнение строк с использованием различных параметров сортировки
  • Смешивание строк с разными наборами символов или сопоставлениями на одном сервере, в одной базе данных или даже в одной и той же таблице
  • Разрешить указание набора символов и сопоставления на любом уровне
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...