ruby - 清理来自 open(url).read 的内容

标签 ruby text sanitization

我正在使用 Ruby 打开一个 URL 并阅读其内容。我正在阅读的文件的内容类型是“文本/纯文本”。

问题是它包含一些我想转义的字符。例如,纯文本中出现的字符之一是“\240”,这是一个连字符的 ASCII。

我很好奇这是如何生成的,因为我在文本中的任何地方都没有看到连字符。然而它无形地存在,当我使用 puts 在控制台中打印文本时,“\240”出现了。

其次,我该如何避开这些奇怪字符的实例?理想情况下,我想转义所有形式为“\[some number]”的字符。我正在使用

"\240".gsub(Regexp.new("\\\d+"),"")

但是好像不行。

是否有更传统的方法来净化从打开 URL 读取的纯文本内容?

最佳答案

您可能想要检查返回的文本的字符集。它可能是 UTF-8,它经常有那么高的字符。 Ruby 1.9 对字符集和它们之间的切换有很好的支持。我使用 str.encode("US-ASCII", :invalid => :replace, :undef => :replace, :replace => "?") 将字符串强制转换为标准 ASCII , 用 ? 替换任何奇怪的字符。

关于ruby - 清理来自 open(url).read 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6618883/

相关文章:

ruby - 挽救父类(super class)上的任何 ActiveRecordError

ruby-on-rails - Capistrano + Whenever gems - bin/rails : Permission denied

python - 如何根据短语存在创建新列?

android - 如何缩小导航图标和工具栏标题之间​​的差距?

ruby-on-rails-4 - 在 Rails 中清理用户输入的最佳方法

ruby - 无方法错误 : undefined method `+@' for "some sting":String

html - 是否可以在网页中以一定 Angular 显示文本?

PHP:base64_encode 是否可以防止 mysql 注入(inject)?

javascript - 从 HTML 中清理/剥离 Javascript

ruby - 为什么重新分配字符串不会减少 Ruby 中的内存使用量?