Hpricotを使用するクローラーを書いています。いくつかのウェブページから文字列のリストをダウンロードし、それをファイルに書き込もうとします。エンコードに問題があります:
_"\xC3" from ASCII-8BIT to UTF-8
_
Webページにレンダリングされ、この方法で印刷されるアイテムがあります。
_Développement
_
_str.encoding
_は_UTF-8
_を返すため、force_encoding('UTF-8')
は役に立ちません。これを読みやすいUTF-8に変換するにはどうすればよいですか?
あなたの文字列は間違った方法でエンコードされているようです:
"Développement".encode("iso-8859-1").force_encoding("utf-8")
#=> "Développement"
文字列はUTF-8であると考えているようですが、実際には、おそらくISO-8859-1のようなものです。
最初に正しいエンコードを定義(強制)してから、UTF-8に変換します。
あなたの例では:
puts "Développement".encode('iso-8859-1').encode('utf-8')
別の方法は次のとおりです。
puts "\xC3".force_encoding('iso-8859-1').encode('utf-8') #-> Ã
Ã
は意味をなさないので、別のエンコーディングを試してください。
" Ruby 1.9:UTF-8の無効なバイトシーケンス "は、より少ないコードで別の優れたアプローチを説明しました。
file_contents.encode!('UTF-16', 'UTF-8')