ruby-on-rails - 如何将任何 HTTParty.get 响应转换为 UTF-8

标签 ruby-on-rails ruby xml encoding utf-8

服务应该从多个源读取 XML 文件

response = HTTParty.get(url)
if response.code == 200
  if response.headers['content-type'] and response.headers['content-type'].to_s.downcase.include?('utf-8')
    @xml = response.body
  else
    @xml = response.body.force_encoding("ISO-8859-1").encode("UTF-8")
  end
end

实际上,此代码仅在 XML 采用 UTF-8ISO-8859-1 时才有效。

如何将任何类型的源文件转换为 UTF-8

还有,当 content-typexml header tag 没有指定编码时,有没有办法知道响应的编码?

最佳答案

您可以通过调用encoding来获取字符串的编码:

"some string".encoding
#=> #<Encoding:UTF-8>

您可以通过调用 encode 并传入编码来对字符串进行编码:

"some string".encode(Encoding::ISO_8859_1)

更多信息在这里: http://www.ruby-doc.org/core-2.0.0/Encoding.html

关于ruby-on-rails - 如何将任何 HTTParty.get 响应转换为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20222707/

相关文章:

ruby - 动态加载 Ruby Gem 的 Thor 选项

python - 使用 Python 解析 XML 文件的文本

php - 如何使用 PHP 更改 XML 标记名称?

mysql - 多个 Rails 应用程序,单个 MySQL 数据库

ruby-on-rails - 如何在我的 Rails 应用程序中与 Amazon Product Advertising API 交互?

ruby-on-rails - 你如何编写一个只为测试文件执行一次的设置方法?

ruby-on-rails - 如何编写以关键字结尾的方法

swift - 在 swift 中解析 XML 失败并出现 nil 错误

ruby-on-rails - rails 5 : find_or_create_by not saving all the params

ruby-on-rails - ruby , Mechanize 。如何获取特定的 <a> 标签文本