45

Railsアプリでは、世界中のRSSフィードを使用していますが、一部のフィードにはUTF-8にないリンクが含まれています。元のフィードリンクは私の制御不能であり、アプリの他の部分で使用するには、UTF-8である必要があります。

エンコードを検出してUTF-8に変換するにはどうすればよいですか?

4

4 に答える 4

66

ルビー1.9

エンコーディングを「強制」するのは簡単ですが、エンコーディングを変更するだけで文字は変換されません。

str = str.force_encoding('UTF-8')

str.encoding.name # => 'UTF-8'

変換を実行する場合は、次を使用しますencode

begin
  str.encode("UTF-8")
rescue Encoding::UndefinedConversionError
  # ...
end

詳細については、次の投稿を必ずお読みください:
http://graysoftinc.com/character-encodings/ruby-19s-string

于 2012-10-18T06:39:06.457 に答える
4

Iconv

require 'iconv'
i = Iconv.new('UTF-8','LATIN1')
a_with_hat = i.iconv("\xc2")

概要:iconv gemは、エンコーディングの変換に関するすべての作業を実行します。次のものがインストールされていることを確認してください。

gem install iconv

ここで、Ruby 1.8が文字列をバイトの配列として扱うため(固有のエンコーディングなし)、文字列が現在どのエンコーディングになっているのかを知る必要があります。たとえば、文字列がlatin1であり、utf-8に変換したいとします。

require 'iconv'

string_in_utf8_encoding = Iconv.conv("UTF8", "LATIN1", string_in_latin1_encoding)
于 2012-10-18T05:56:45.860 に答える