0

Net::HTTP 経由でデータを取得する必要があります。ASCII-8 ビットで応答を受信することでうまく機能します。問題は、これを utf8 にエンコードし、すべての非ラテン記号を保存する方法です。

@content.encode('utf-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '')私はすべてのキリル記号を失います

@content.encode('utf-8', 'binary')エラーが発生"\xCB" from ASCII-8BIT to UTF-8します

@content.force_encoding("UTF-8)キリル文字の代わりに ������ を得る

Google検索で答えが見つかりません。

4

1 に答える 1

3

問題は次の方法で解決されます

begin
    cleaned = response.body.dup.force_encoding('UTF-8')
    unless cleaned.valid_encoding?
       cleaned = response.body.encode( 'UTF-8', 'Windows-1251' )
    end
    content = cleaned
rescue EncodingError
    content.encode!( 'UTF-8', invalid: :replace, undef: :replace )
end

ここにもっと完全なデータがあります

于 2012-07-30T11:02:28.070 に答える