1
我有以下的代碼分析與引入nokogiri HTML文檔:更改UTF-8空間,以正則表達式,能空間
td.next_element.text.scan(/\A[^(]+/).first.gsub(/\s+/, " ").strip
還有一個case
聲明與具有\s+
,而不是一個正則表達式捕捉任何東西。我試圖使用strip
,但它沒有做任何事情。
經過上述gsub
行的測試後,我發現在編碼空白的方式上存在問題。 td.next_element.text[-2].ord
返回的結果不是我所預期的那樣,而是160.但是我意識到我的文檔是UTF-8格式的,而不是ASCII格式的,而且160是一個非破壞性的空間。
我應該能夠做到這一點,我想:
case td.text.strip.downcase.gsub(/\xA0|\xC2/, ' ')
問題是,我得到
Encoding::CompatibilityError
(incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)):
我該怎麼辦?此外,不是正則表達式應該匹配所有的空白,而不僅僅是ASCII?
您需要做的是設置輸入數據的字符編碼。我不是Ruby程序員,所以我不知道具體情況,但應該有一些庫。我找到了相關的文章:http://yehudakatz.com/2010/05/05/ruby-1-9-encodings-a-primer-and-the-solution-for-rails/ – dan1111