У меня есть сайт Rails, который работает на MySQL 5.0.32-Debian.
На этом конкретном сайте все мои таблицы используют utf8 / utf8_general_ci
encoding.
Внутри этой базы данных у меня есть некоторые данные, которые выглядят так:
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. Например, китайский юань появляется как 元 в моем браузере, а не å... ƒ, поскольку он отображается внутри базы данных.
Когда я загружаю эти данные на свою локальную машину разработки OS X и локально запускаю db и Rails, я вижу представление изнутри БД (å... ƒ) в моем браузере, а не в качестве символа 元, как я вижу в постановке.
Отладка, которую я выполнил
Я гарантировал, что все заголовки Content-Type возвращаются как utf8 с каждого веб-сервера (локального, промежуточного).
Мой локальный сервер mysql и промежуточный сервер настроены на использование utf8 в качестве кодировки по умолчанию. Я использую "set names" utf8 "перед тем, как делать какие-либо вызовы.
Я даже могу подключиться к моему промежуточному db из моего хоста OS X Rails, и я все еще вижу символы å... ƒ, представляющие юань. Я предполагаю, что, возможно, проблема с моим локальным клиентом mysql, но я не могу понять, в чем проблема.
Возможно, это может дать ключ
Чтобы сделать его еще более запутанным, если я вставляю символ 元 в db на свой локальный компьютер, я вижу, что в веб-браузере отлично. --- YET, если я вставляю тот же самый символ в свою промежуточную db, я получаю? отметьте в нем место на странице с моего сайта Rails.
Кроме того, локально на моей машине OS X rails, если я использую "set names" latin1 '"перед моими запросами, все символы возвращаются должным образом. У меня эти таблицы были установлены как latin1 раньше - может это проблема?
Кто-то, пожалуйста, помогите мне здесь, я схожу с ума, пытаясь понять, что случилось!