我使用Ruby(以及有用的情況下的Nokogiri)對某些文檔進行編碼。我想將實際的Unicode字符(如「
)更改爲html實體(如“
)。我該怎麼做呢?我知道我可以做一個單一的字符的東西,如將UTF-8中的Unicode字符從符號更改爲數字代碼
s = '「'
puts "&##{.unpack('U').first};" # gives “
但有沒有辦法做到這一點正確用iconv或引入nokogiri?
我使用Ruby(以及有用的情況下的Nokogiri)對某些文檔進行編碼。我想將實際的Unicode字符(如「
)更改爲html實體(如“
)。我該怎麼做呢?我知道我可以做一個單一的字符的東西,如將UTF-8中的Unicode字符從符號更改爲數字代碼
s = '「'
puts "&##{.unpack('U').first};" # gives “
但有沒有辦法做到這一點正確用iconv或引入nokogiri?
我想出了這個方法,它採用了一種非常強大的方法,它肯定(希望?)被編譯後的庫解決方案所取代?它的工作原理如下:
def clean(text)
# Convert html chars to entities.
text = text.gsub(/[^\u{20}-\u{7E}]/){|char| "&##{char.unpack('U')[0]};"}
end
有HTMLEntities gem。因爲它是十進制編碼,它和你的代碼大致相同(解壓縮)。
它可能不是正確的,但引入nokogiri做到這一點(libxml2的,我認爲實際上),當它不理解編碼:
Nokogiri::HTML(html,nil,'klingon')