Решение Unicode с Rails 2.3.9?Преобразовать простую строку - PullRequest
0 голосов
/ 23 ноября 2011

Я использую API Twitter с официальной оболочкой ruby ​​gem.

Когда я делаю Twitter :: Search.new («ключевые слова»).Он возвращает хеш с текстовым полем, которое выглядит следующим образом:

text: "Merci @Isabouriaud @ nicod92160 @NicolasAtger Watson" une des r \ u00E9alisations "

Я знаю, что это Unicode, но не можетне могу найти способ конвертировать эту строку в обычный текст в ruby. Это не имеет ничего общего с моей базой данных, так как я показываю твиты сразу ...

Мне просто нужна функция для конвертации "r\ u00E9alisations "в" réalisations "

Я пытался: ActiveSupport :: JSON.decode (" \ "\ u00E9 \" ") => é, но ActiveSupport :: JSON.decode (" \ "\ invit \ u00E9\ "")! = invité (как я хочу)

Есть идеи?

Большое спасибо. enter image description here

Решение

Мне пришлось использовать последнюю версию json gem и проанализировать ее. Текущая версия twitter twitter для rails 2.3, вероятно, больше не актуальна.

Я думаю, что другим решением было бы обновитьв Rails 3 и используйте метод force_encoding.

class TwitterWrapper


  def self.base
    "http://search.twitter.com"
  end


  #json_string.gsub!(/\\u([0-9a-z]{4})/) {|s| [$1.to_i(16)].pack("U")}
  def self.search(keyword)
    keyword = keyword.gsub(" ","%20")
    read("#{base}/search.json?q=#{keyword}")["results"]
  end

  private

  def self.read(url)
    JSON.parse(Net::HTTP.get(URI.parse(url)))
  end

end

1 Ответ

0 голосов
/ 23 ноября 2011

То, что вы видите - это предварительное представление строки юникода в терминале ruby.Если вы записываете его в файл и открываете его в каком-либо редакторе с поддержкой юникода, акцент должен выглядеть хорошо.

Вы можете установить $ KCODE = 'UTF-8', чтобы исправить это для терминала.

...