очистка контента от открытых (url) .read - PullRequest
1 голос
/ 08 июля 2011

Я использую Ruby, чтобы открыть URL и прочитать его содержимое. Тип содержимого файла, который я читаю, «text / plain».

Проблема в том, что в нем есть некоторые символы, которые я хочу экранировать. Например, один из символов, который появляется в простом тексте, это «\ 240», что является ASCII для дефиса.

Мне любопытно, как это генерируется, потому что я не вижу дефис в тексте. Тем не менее он существует невидимо, и "\ 240" появляется, когда я использую puts для печати текста в консоли.

Во-вторых, как мне избежать таких случаев странных персонажей? В идеале я хочу экранировать все символы вида "\ [some number]". Я использую

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

но это не похоже на работу.

Существуют ли более традиционные способы очистки открытого текстового содержимого после открытия URL-адреса?

Ответы [ 2 ]

2 голосов
/ 08 июля 2011

Возможно, вы захотите проверить набор символов текста, который возвращается. Это может быть UTF-8, который часто имеет такие высокие символы. Ruby 1.9 прекрасно поддерживает наборы символов и переключение между ними. Я использовал str.encode("US-ASCII", :invalid => :replace, :undef => :replace, :replace => "?") для принудительного перевода строки в стандартный ASCII, заменяя любые нечетные символы на ?

1 голос
/ 08 июля 2011

Поиграв с этим, я нашел следующее регулярное выражение, которое помогает мне:

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