我需要清理用户输入中的各种Word'智能'字符,包括但不限于以下内容:
– EN DASH
‘ LEFT SINGLE QUOTATION MARK
’ RIGHT SINGLE QUOTATION MARK
是否有任何Ruby函数或库可以将这些函数或库映射到它们的ASCII(近似)等价物中,或者我真的只需要做一堆手动gsubs吗?
答案 0 :(得分:2)
HTMLEntities gem会将实体解码为UTF-8。
您可以使用iconv音译为最接近的ASCII等效或简单的gsub
或tr
来电。詹姆斯格雷有一些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
答案 1 :(得分:0)
有些gsub听起来是最好的选择,特别是如果你计划加载一个额外的库来做基本相同的事情。