【问题标题】:Encoding error in content get from open-uri in ruby on rails内容中的编码错误来自 ruby​​ on rails 中的 open-uri
【发布时间】:2010-10-29 17:15:35
【问题描述】:

在某些情况下,当我使用open 在 Ruby 中获取网页时,该页面的内容存在编码错误。示例:

open("http://www.google.com.br").read

çã 等字符被 ? 替换

我怎样才能得到正确的字符?

【问题讨论】:

  • 你的角色使用 utf-8 吗?

标签: ruby character-encoding open-uri


【解决方案1】:

这似乎有效:

require 'iconv'
i = Iconv.new('UTF-8','LATIN1')
i.iconv(open('http://google.com.br').read)

【讨论】:

  • 只要整个文档的编码一致,它就可以工作。生成自己的内容的站点的 HTML通常是一致的。来自多个地方的内容聚合的网站的 HTML 最终可能会遍布整个地图,例如 Google。
  • 错误的未定义方法“读取”#<0x1166c2de0>
【解决方案2】:

在这里运行 Ruby 1.9.2。您的代码生成的 HTML 包含如下文字:

Configura\xE7\xF5es

所以至少在我的工作机器上(Vista,使用 Windows CMD 控制台),它返回 HTML 转义字符。

另外,据我所知,Ruby 1.9.2“几乎”完全兼容 Unicode,所以我猜你不应该遇到 UTF-8 问题,除非你的控制台无法处理打印 UTF-8 字符。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2015-08-16
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2018-04-08
    • 2016-06-27
    • 2012-10-29
    • 1970-01-01
    相关资源
    最近更新 更多