Ruby on Rails - удаление странных персонажей из тела в рейке - PullRequest
0 голосов
/ 03 августа 2011

На веб-сайте моей компании Rails у нас есть раздел в Твиттере, где твиты от нашей команды в социальных сетях отображаются в виде грабли.В основном задача rake использует гем Twitter, чтобы регулярно импортировать любые новые твиты в базу данных и отображать их оттуда.URL-ссылки в твите преобразуются в HTML-ссылки с помощью помощника auto_link.

До сих пор работало нормально.Внезапно ссылки не работают и даже неправильно подсвечивают слово прямо перед URL-ссылкой.Итак, в примере твита, который должен выглядеть следующим образом: «Пожалуйста, будьте в безопасности, Сент-Луис. Предупреждение о перегреве продлено до августа http://bit.ly/...", слово« Август »связано, а сам следующий URL не работает, как будто что-то было вмежду последним словом и разрывом ссылки ...

Исследовал помощников, посмотрел в базе данных текстовое поле твита, чтобы увидеть, было ли что-то странное, даже использовал консоль rails для ручного извлечения твитов,но все выглядело хорошо. Только когда я вошел в весь шестнадцатеричный код твита, я увидел ...

Please be safe S
t. Louis. Heat w
arning extended 
through August.
 http://bit.ly/
r5fXlz #heatpoca
lypse

Таким образом, виновником было то, что его бросили в пространство, когдаЯ удалил преступное пространство и снова прочитал его вручную в базе данных, проблема прояснилась.

Единственная проблема заключается в том, что я не понимаю, почему тело твита импортируется таким образом, особенно когда оно выглядит нормально черезконсоль Rails. Поскольку это более старая база данных, я заметил, что она все еще использует кодировку latin1 в некоторых областях с utf8 в другихs, и я был уверен, что преобразование всего этого в UTF-8 исправит это, но это не так.

Я дошел до того, что пытался использовать вспомогательный санитарный помощник на теле, прежде чем импортировать, но этотоже не сработало.

Также попробовал ruby ​​gsub, чтобы убрать ¬ †, но это не сработало.

У кого-нибудь есть понимание того, как решить эту странную проблему?

1 Ответ

0 голосов
/ 16 августа 2011

Я наконец смог решить эту проблему, запустив следующее специально для строки тела в задаче rake ...

Iconv.conv('ASCII//TRANSLIT', 'UTF8', tweet.body)

Странно, но это работает.Более подробную информацию об использовании вышеупомянутого можно найти здесь: ruby ​​(1.8.7): Как избавиться от непечатаемых символов при очистке?

...