字符我需要清理各種字「智能」字符的用戶輸入,包括但不限於以下內容:清理「智能」從Word中的Ruby
– EN DASH
‘ LEFT SINGLE QUOTATION MARK
’ RIGHT SINGLE QUOTATION MARK
是否有任何的Ruby的功能或庫將它們映射到它們的ASCII(近似)等價物,還是我真的需要做一堆手動gsubs?
字符我需要清理各種字「智能」字符的用戶輸入,包括但不限於以下內容:清理「智能」從Word中的Ruby
– EN DASH
‘ LEFT SINGLE QUOTATION MARK
’ RIGHT SINGLE QUOTATION MARK
是否有任何的Ruby的功能或庫將它們映射到它們的ASCII(近似)等價物,還是我真的需要做一堆手動gsubs?
該HTMLEntities gem會將實體解碼爲UTF-8。
您可以使用iconv音譯爲最接近的ASCII等效或簡單的gsub
或tr
調用。 James Gray有一些blogs關於在各種字符集之間轉換,顯示如何進行音譯。
require 'htmlentities'
chars = [
'–', # EN DASH
'‘', # LEFT SINGLE QUOTATION MARK
'’' # RIGHT SINGLE QUOTATION MARK
]
decoder = HTMLEntities.new('expanded')
chars.each do |c|
puts "#{ c } => #{ decoder.decode(c) } => #{ decoder.decode(c).tr('–‘’', "-'")} => #{ decoder.decode(c).encoding }"
end
# >> – => – => - => UTF-8
# >> ‘ => ‘ => ' => UTF-8
# >> ’ => ’ => ' => UTF-8
一些gsubs聽起來像是最好的選擇,特別是如果你打算加載一個額外的庫來做基本相同的事情。