清理';智能&x27;Ruby中Word中的字符

清理';智能&x27;Ruby中Word中的字符,ruby,ms-word,special-characters,smart-quotes,Ruby,Ms Word,Special Characters,Smart Quotes,我需要清理用户输入中的各种“智能”字,包括但不限于以下内容: – EN DASH ‘ LEFT SINGLE QUOTATION MARK ’ RIGHT SINGLE QUOTATION MARK 是否有任何Ruby函数或库可以将这些函数或库映射到它们的ASCII(近似)等价物中,或者我真的需要做一些手动GSUB吗?有些GSUB听起来是最好的选择,特别是如果您计划加载整个额外库来完成基本相同的任务。gem将实体解码为UTF-8 您可

我需要清理用户输入中的各种“智能”字,包括但不限于以下内容:

– EN DASH
‘ LEFT SINGLE QUOTATION MARK
’ RIGHT SINGLE QUOTATION MARK

是否有任何Ruby函数或库可以将这些函数或库映射到它们的ASCII(近似)等价物中,或者我真的需要做一些手动GSUB吗?

有些GSUB听起来是最好的选择,特别是如果您计划加载整个额外库来完成基本相同的任务。

gem将实体解码为UTF-8

您可以使用将其音译为最接近的ASCII等效值,或简单的
gsub
tr
调用。詹姆斯·格雷有一些关于在各种字符集之间转换的知识,展示了如何进行音译

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