如何将 Net::HTTP 响应转换为 Ruby 1.9.1 中的某种编码?

2023-11-23

我有一个 Sinatra 应用程序(http://analyzethis.espace-technologies.com)执行以下操作

  1. 检索 HTML 页面(通过 net/http)
  2. 从response.body创建Nokogiri文档
  3. 提取一些信息并将其在响应中发回。响应应该是 UTF-8 编码的

因此,我在尝试阅读使用 windows-1256 编码的网站(如 www.filfan.com 或 www.masrawy.com)时遇到了这个问题。

问题是编码转换的结果不正确,但没有抛出错误。

net/http response.body.encoding 给出 ASCII-8BIT,无法转换为 UTF-8

如果我执行 Nokogiri::HTML(response.body) 并使用 css 选择器从页面获取某些内容 - 例如标题标签的内容 - 我会得到一个字符串,当我调用 string.encoding 时返回 WINDOWS-1256 。我使用 string.encode("utf-8") 并使用它发送响应,但响应再次不正确。

关于我的方法有什么问题有什么建议或想法吗?


因为 Net::HTTP 无法正确处理编码。看http://bugs.ruby-lang.org/issues/2567

你可以解析response['content-type']其中包含字符集而不是解析整个response.body.

然后使用force_encoding()设置正确的编码。

response.body.force_encoding("UTF-8")如果网站以 UTF-8 提供。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Net::HTTP 响应转换为 Ruby 1.9.1 中的某种编码? 的相关文章

  • Rspec:期望与期望与块 - 有什么区别?

    刚刚学习 rspec 语法 我注意到这段代码有效 context given a bad list of players do let bad players it fails to create given a bad player li
  • Nokogiri 相当于 jQuery Closest() 方法,用于在树中查找第一个匹配的祖先

    jQuery 有一个可爱的方法 虽然命名有些错误 称为最接近 http api jquery com closest 它会沿着 DOM 树向上寻找匹配的元素 例如 如果我有这样的 HTML table src foo tr td Yay t
  • 使 case/switch 返回值的快捷方式

    我很确定我看到有人做了像下面的代码这样的快捷技术 这不起作用 return case guess when guess gt answer then high when guess lt answer then low else corre
  • 如何在 Ruby 中转义单引号?

    我通过一个脚本 不是我的 将一些 JSON 传递到服务器 该脚本接受 JSON 作为字符串 JSON 的某些内容包含单引号 因此我想确保在传递给脚本之前对所有单引号进行转义 我已经尝试过以下方法 gt irb gt 1 9 3p194 00
  • Ruby openssl 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有 Ruby 的在线文档openssl图书馆 我能找到的只是博客文章和第三方文章 而 rdoc 本
  • 如何从另一个 .rb 文件访问模块内和类内的 Ruby 方法

    我想知道如何从另一个 rb 文件访问此模块中的方法 module Decisioning module Decision class OfferProxy lt FinanceApplication Offer def my method
  • 如何检查用户电子邮件的唯一性并将结果传递给 jQuery?

    我有这个问题 我正在控制器中检查用户电子邮件并发送 json 成功响应 如果已获取 并添加输入的 css 样式 我还需要阻止提交并添加一些消息 这是我的检查电子邮件操作 使用本文 http paydrotalks com posts 45
  • 如何在c++中使用libcurl发送POST请求并接收它?

    我正在使用 c libcurl 向网页发送 POST 请求 但我正在努力测试它 使用的代码是 include
  • 如何在heroku上运行一个简单的文件

    假设我已经在 github 上安装了 Rails 应用程序 并且正在 heroku 上部署 github 存储库 我遇到过这样的情况 我有一个包含一堆单词的简单文本文件 它在我的 github 存储库中 我想将这些单词 使用简单的 ruby
  • 无效数据的 REST 响应代码

    如果出现以下情况 应将什么响应代码传递给客户端 用户注册时传递了无效数据 例如电子邮件格式错误 用户名 电子邮件已存在 我选择了403 我还发现了以下我觉得可以用的 维基百科 412 前提条件失败 服务器不满足请求者要求的先决条件之一 提出
  • 为什么我不能“string”.print()?

    我的理解print 在 Python 和 Ruby 以及其他语言 中 它是字符串 或其他类型 上的方法 因为它的语法非常常用 打印 嗨 works 那么为什么不呢 hi print 在 Python 中或 hi print在红宝石工作 当你
  • 表单帖子上的 asp.net mvc 编码

    我在我的 asp net mvc 表单 带有文本区域的 nicedit 中使用富文本编辑器 当我在帖子上提交表单时 因为它不是 html 编码的 我收到以下消息 从客户端检测到潜在危险的 Request Form 值 如何对 post 上的
  • 用 ruby​​ 漂亮地打印到文件

    我正在尝试将哈希打印到文件中 我尝试了unix重定向 逐步添加不同的标志 echo pp mymap tee summary out 2 gt 1 和文件IO my file File new dir myfile out w my fil
  • 不加载隐藏图像

    我的网站上有一堆隐藏图像 它们的容器 DIV 具有 style display none 根据用户的操作 某些图像可能会通过 JavaScript 显示 问题是我的所有图像都是在打开页面时加载的 我想通过仅加载最终可见的图像来减轻服务器的压
  • Rails api 中阻止用户配置文件的最佳 HTTP 状态代码是什么?

    我在 Rails 中为社交应用程序编写了一个 API 这个应用程序就像Facebook一样 用户可以阻止其他用户 如果用户 A 阻止用户 B 则用户 B 无法查看用户 A 的个人资料页面 那么我应该返回的最佳 HTTP 代码状态是什么 40
  • 供用户使用的 Rails 模型结构

    我是 Rails 新手 正在开发我的第二个 Rails 应用程序 该应用程序将为用户提供不同的角色 但某些用户将具有多个角色 该网站的每个用户都将是艺术家 一些用户将担任主持人的角色 我将如何构建这个 在我使用的一些 PHP 应用程序中 只
  • 从 SinkWriter 或 ICodecAPI 或 IMFTransform 获取编码器名称

    我使用 SinkWriter 来使用媒体基础对视频进行编码 初始化 SinkWriter 后 我想获取它使用的底层编码器 并打印出它的名称 这样我就可以看到它使用的编码器 就我而言 编码器很可能是H 264 视频编码器 http msdn
  • 在 Ruby 中的文件中查找并替换

    我有一个用 ruby 编写的小程序 我在这里找到了一段很好的代码 用于查找和替换文件中的某些内容 但它似乎不起作用 这是代码 usr bin env ruby DOC test txt FIND M SEP n make substitut
  • Flex HTTPservice 和 POST,发送文件?

    我使用基本的 Post 将数据发送到 Django 服务器 数据由flex动态创建的base64编码的640 380 PNG图像组成 成分
  • 即使设置了语言环境,data.frames中的藏文字符也无法在R控制台中显示(中文可以,矩阵中的藏文可以)

    在 R 中 藏文字符位于 data frames 中时无法正确显示 gt Sys setlocale LC CTYPE Tibetan 1 Tibetan China 950 gt data frame a a 1

随机推荐

  • 如何在Excel中过滤多个条件?

    我正在尝试过滤多个条件 但我看到 过滤器 选项只有 2 个 AND OR 选项字段 我有一个充满链接的专栏 我想提取其中包含这些的所有行 pdf doc docx xls xlsx rtf TXT csv pps 有没有好的方法可以做到这一
  • Java读取wav文件

    我想用 Java 读取 wav 文件 并且将使用 K means 对它们进行分类 我怎样才能读取Java中的wav文件并将它们分配到一个数组或类似的东西 你可以建议它的想法 来对它们进行分类 EDIT 我想使用 API 来读取 wav 文件
  • 如何像 UNIX 中的 tar 一样在 Perl 中归档目录?

    我想归档一个目录 我不知道是否可以调用 我想压缩一个目录 我想在解压时保留另一端的访问权限 我应该用 perl 解决这个问题 感谢您的回复 但我为什么要求使用 Perl 来做到这一点是因为我希望它独立于平台 我想将一个大文件传输到多台机器
  • 如何克隆到非空目录?

    我有目录 A 和与目录 B 匹配的文件 目录 A 可能还有其他需要的文件 目录 B 是一个 git 存储库 我想将目录 B 克隆到目录 A 但 git clone 不允许我这样做 因为该目录非空 我希望它只是克隆 git 并且因为所有文件都
  • 如何使用 python 将 wav 实时转换为 mp3?

    我有如下所示的代码来从麦克风获取音频 import pyaudio p pyaudio PyAudio CHUNK 1024 FORMAT pyaudio paInt16 CHANNELS 2 RATE 1024 10 RECORD SEC
  • 范围最小查询 方法(从树到受限 RMQ)

    所以 我读了thisTopCoder 关于 RMQ 范围最小查询 的教程 我有一个很大的问题 在他介绍的部分方法 到目前为止我能理解的是 整个方法实际上使用了中介绍的方法稀疏表 ST 算法 从 LCA 减少到 RMQ and 从 RMQ 到
  • Win32 中本机 C/C++ 的高级 HTTP 客户端库

    Win32 中是否没有用于本机 C C 的 高级 HTTP 库 或者我只是找错了地方 我所说的 高级 是指一个 API 它允许我使用与 NET 框架 大致相同 的抽象级别在 C 中执行 HTTP Web 请求 响应 但请注意 使用 C CL
  • FontAwesome 图标在反应/下一个应用程序中无法正常工作

    已解决 TLDR 添加import fortawesome fontawesome svg core styles css 到 app js index js 文件修复了该问题 并且 FontAwesome 按预期工作 我的问题是由npx
  • delete[]等于删除吗? [复制]

    这个问题在这里已经有答案了 IP ADAPTER INFO ptr new IP ADAPTER INFO 100 如果我免费使用 delete ptr 会导致内存泄漏吗 如果不会的话为什么 这是VS2005生成的反汇编代码 delete
  • GitHub Actions 的工作流程中是否可以有动态策略矩阵?

    我想在工作流程中动态指定策略矩阵 所以 而不是 strategy matrix foo bar baz 我想首先调用一些脚本来计算并返回一个数组 例如 bar baz 对我来说 然后我想用它作为策略矩阵 这可能吗 使用可用的 GitHub
  • AppCompat v7 工具栏向上/后退箭头不起作用

    我的活动中有两个片段 当片段 A 显示时 我希望显示抽屉式导航汉堡图标并且抽屉式导航能够工作 当片段 B 显示时 我希望显示后退箭头 并在单击它时进行向上导航 但是 除非导航抽屉打开 否则我似乎无法让新的 AppCompat v7 工具栏在
  • 如何在pyCharm中进行单元测试

    我想做一些单元测试 所以我设置了一个列表 其中所有值都应断言为 true 就像这个问题 但我想让它跑进去PyCharm 按Alt Shift F10 如果我只使用答案中的代码 我就会得到No tests were found 您需要仔细检查
  • 如何检测 Java 字符串中的日文文本?

    我需要能够检测 Java 字符串中的日语字符 目前 我正在获取 UnicodeBlock 并检查它是否等于Character UnicodeBlock KATAKANA 或Character UnicodeBlock HALFWIDTH A
  • Android 对话框中的非法参数异常

    我正在使用此代码来显示警报对话框 当我单击 确定 按钮时 它应该显示日期选择器 protected Dialog onCreateDialog int id switch id case TIME DIALOG ID return new
  • 将 byte[] 转换为 float[] 时出现 UnsupportedOperationException

    我试图通过将 byte 放入 ByteBuffer 中 将 byte 转换为 float 将其转换为 FloatBuffer asFloatBuffer 然后将其转换为数组 private static float toFloatArray
  • 如何在 MS SQL Server 上模拟 Oracle 物化视图?

    连接到 MS SQL Server 的应用程序将创建视图 其中单行结果是包括 1 10k 记录聚合的分析 结果视图中的适用标准将有数十到数万个结果 然后 视图 条件将按视图中最有可能是聚合列的某些列 用户指定 进行排序 当使用聚合列进行排序
  • Dart/Flutter :日期范围内的天数列表

    我需要从日期范围中检索天数列表 用户选择开始日期和结束日期 并计算之间的天数 包括开始和结束日期 我尝试使用 for 循环 如下所示 List
  • Sub 与没有返回值的函数

    子程序的意义是什么 Sub 为什么不使用一个Function没有返回值 Edit 我的意思是 为什么关键字Sub存在 我可以用Function没有声明返回值并具有相同的 不是吗 因为它澄清了intent A Function明确地说 我回来
  • 如何在 GO 的 websocket 中保持连接处于活动状态

    I use code google com p go net websocket在服务器中 因此客户端可以从服务器获取通知 但是 客户端连接到服务器后 如果客户端和服务器之间没有任何数据传输 服务器将返回 EOF 错误websocket J
  • 如何将 Net::HTTP 响应转换为 Ruby 1.9.1 中的某种编码?

    我有一个 Sinatra 应用程序 http analyzethis espace technologies com 执行以下操作 检索 HTML 页面 通过 net http 从response body创建Nokogiri文档 提取一些