清理open(url).read中的内容

时间:2011-07-08 01:04:37

标签: ruby text sanitization

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

问题在于它包含一些我想要转义的字符。例如,明文中出现的一个字符是“\ 240”,它是连字符的ASCII。

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

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

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

但它似乎不起作用。

是否有更传统的方法来清理从打开网址中读取的纯文本内容?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

玩完这个后,我找到了以下正则表达式,它为我提供了诀窍:

str.gsub(/[^\x00-\x7F]/,'')