Не могу узнать, где моя строковая кодировка Ruby 1.9 испорчена

0

Где-то вдоль линии от БД к приложению это:

sauté

превращается в это:

sautÃ

Я использую Ramaze + Rack + MySQL. У меня установлен плагин force_encoding, поэтому кодировка в строке - UTF-8. Если я просмотрю запись в оболочке базы данных, она выглядит нормально. Кодировка по умолчанию в таблице - utf8, а само поле - "текст". Кодировка в моем соединении с базой данных - utf8. Кроме того, на моем Macbook все работает отлично. Это на моем сервере Ubuntu, что он искалечен. Я надеюсь, что кто-то узнает это и скажет мне, что его unicode превращается в ASCII, затем обратно или что-то в этом роде.

  • 0
    Где вы видите испорченные символы? Если вы видите их в результирующем HTML, сначала проверьте кодировку HTML.
Теги:
utf-8
rack
ramaze

1 ответ

0
Лучший ответ

Скорее всего, ваш язык отличается. Выполните команду locale на обоих и посмотрите, какая разница. Я предполагаю, что вы видите проблему, когда возвращаете результаты из MySQL, что является общей проблемой с 1.9 в соответствии с результатами google: http://www.google.com/search?q=mysql+ruby+1.9+encoding.

  • 0
    Все местные жители все "en_US.UTF-8". Да, я тоже вижу это с консоли, просто беру объект и осматриваю его. Итак, вот кое-что интересное. Я установил для Encoding.default_internal значение «UTF-8», из-за чего запись взорвалась с «\ xC3» из ASCII-8BIT в UTF-8 », но при этом все новые данные, поступающие в БД, выходили очень хорошо. Таким образом, должно быть какая-то проблема с входом в БД, а не с выходом, как я думал. Как бы то ни было, я собираюсь перейти к ведению журнала SQL на производстве и просто назвать это победой. Строки Ruby 1.9 действительно убивают меня.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню