У меня есть промежуточный сайт Rails, работающий на MySQL 5.0.32-Debian.
На этом сайте все мои таблицы используют кодировку utf8 / utf8_general_ci
.
Внутри этой базы данных у меня есть некоторые данные, которые выглядят так:
mysql> select * from currency_types limit 1,10;
+------+-----------------+---------+
| code | name | symbol |
+------+-----------------+---------+
| CAD | Canadian Dollar | $ |
| CNY | Chinese Yuan | å…ƒ |
| EUR | Euro | € |
| GBP | Pound | £ |
| INR | Indian Rupees | ₨ |
| JPY | Yen | ¥ |
| MXN | Mexican Peso | $ |
| USD | US Dollar | $ |
| PHP | Philippine Peso | ₱ |
| DKK | Denmark Kroner | kr |
+------+-----------------+---------+
Вот у меня проблема
При подготовке (при запущенном сайте db и Rails на коробке debian) символы для символов отображаются правильно при отображении из Rails. Например, китайский юань отображается как uan в моем браузере, а не å… ƒ, как показано в базе данных.
Когда я загружаю эти данные на свой локальный компьютер для разработки OS X и запускаю локально db и Rails, я вижу представление изнутри БД (å… ƒ) в моем браузере, а не символ 元, как я вижу при постановке.
Отладка, которую я сделал
Я гарантировал, что все заголовки для Content-Type возвращаются как utf8 с каждого веб-сервера (локальный, промежуточный).
Мой локальный сервер mysql и промежуточный сервер настроены на использование utf8 в качестве кодировки по умолчанию. Я использую "set names 'utf8'", прежде чем совершать какие-либо звонки.
Я даже могу подключиться к моей промежуточной базе данных с моего хоста OS X Rails, и я все еще вижу символы å… ƒ, обозначающие юань. Я думаю, тогда, возможно, есть проблема с моим локальным клиентом mysql, но я не могу понять, в чем проблема.
Возможно, это может дать подсказку
Чтобы сделать это еще более запутанным, если я вставлю символ 元 в БД на моем локальном компьютере, я вижу, что в веб-браузере все в порядке. --- ДА, если я вставлю этот же персонаж в свою постановочную базу данных, я получу? отметьте это место на странице моего промежуточного сайта Rails.
Кроме того, локально на моем компьютере с OS X rails, если я использую «set names 'latin1'» перед своими запросами, все символы возвращаются правильно. У меня были эти таблицы как latin1 раньше - может ли это быть проблемой?
Кто-то, пожалуйста, помогите мне здесь, я схожу с ума, пытаясь выяснить, что не так!