【发布时间】:2011-09-30 22:11:51
【问题描述】:
我正在使用 Ruby 打开一个 URL 并读取其内容。我正在阅读的文件的内容类型是“文本/纯文本”。
问题是它包含一些我想转义的字符。例如,纯文本中出现的字符之一是“\240”,它是连字符的 ASCII。
我很好奇这是如何生成的,因为我在文本中的任何地方都看不到连字符。然而它是不可见的,当我使用puts 在控制台中打印文本时,会出现“\240”。
其次,我该如何避免这种奇怪的字符实例?理想情况下,我想转义所有形式为“\ [某个数字]”的字符。我正在使用
"\240".gsub(Regexp.new("\\\d+"),"")
但它似乎不起作用。
是否有更传统的方法来清理从打开 URL 读取的纯文本内容?
【问题讨论】:
-
连字符不是“\240”。连字符是低位 ASCII 字符
45.chr #=> "-"。您看到的是高位字符。 -
你是如何打开网址的?显示 URL 和一些示例代码。 Net::HTTP 和 Open::URI 都可以让您查看内容编码,以了解服务器认为文档是什么字符集。问题是服务器可能是错误的,但这是您的起点。您可以发出
HEAD请求来查找编码,然后告诉Ruby 在您收到实际正文时使用它。这应该有助于避免被误解的字符。
标签: ruby text sanitization