私はRubyを使用してURLを開き、その内容を読み取ります。私が読んでいるファイルのコンテンツタイプは 'text/plain'です。open(url)からのコンテンツのサニタイズ.read
問題は、これにエスケープしたいいくつかの文字が含まれていることです。たとえば、プレーンテキストに登場する文字の1つは、ハイフンのASCIIである「\ 240」です。
テキストのどこにでもハイフンが表示されないため、これがどのように生成されているのか不思議です。それでも、それは目に見えない存在で、puts
を使用してコンソールにテキストを印刷すると、「\ 240」が表示されます。
もう1つ、奇妙な文字のこのようなインスタンスをどのようにエスケープしますか?理想的には、「\ [some number]」という形式のすべての文字をエスケープしたいと考えています。私は使用しています
"\240".gsub(Regexp.new("\\\d+"),"")
しかし、それは動作していないようです。
URLを開くことから読み取られたプレーンテキストコンテンツのサニタイズの伝統的な方法はありますか?
ハイフンは「\ 240」ではありません。ハイフンは下位ASCII文字、 '45.chr#=>" - "'です。上位ビットの文字が表示されています。 –
URLをどのように開いていますか? URLとサンプルコードを表示します。 Net :: HTTPとOpen :: URIの両方で、コンテンツエンコーディングを見て、サーバーがその文書をどの文字セットと見なすかを確認できます。問題はサーバーが間違っている可能性がありますが、それはあなたの出発点です。 'HEAD'リクエストをしてエンコーディングを見つけ、Rubyに実際のボディを受け取ったときにそれを使用するように指示できます。それは誤解されている文字を避けるのに役立ちます。 –