0

我需要通过 Net::HTTP 获取一些数据,我收到 ASCII-8bit 的响应后效果很好。问题是如何将其编码为 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)而不是西里尔符号

我无法通过谷歌搜索找到答案。

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 回答