以下を含むがこれらに限定されない、ユーザー入力のさまざまなWordの「スマート」文字をクリーンアップする必要があります。
– EN DASH
‘ LEFT SINGLE QUOTATION MARK
’ RIGHT SINGLE QUOTATION MARK
これらをASCII(ほぼ)同等のものにマッピングするためのRuby関数またはライブラリはありますか、それとも本当にたくさんの手動gsubを実行する必要がありますか?
以下を含むがこれらに限定されない、ユーザー入力のさまざまなWordの「スマート」文字をクリーンアップする必要があります。
– EN DASH
‘ LEFT SINGLE QUOTATION MARK
’ RIGHT SINGLE QUOTATION MARK
これらをASCII(ほぼ)同等のものにマッピングするためのRuby関数またはライブラリはありますか、それとも本当にたくさんの手動gsubを実行する必要がありますか?
HTMLEntities gemは、エンティティをUTF-8にデコードします。
iconvを使用して、最も近いASCIIの同等物または単純なgsub
またはtr
呼び出しに音訳することができます。James Greyは、音訳の方法を示すさまざまな文字セット間の変換に関するブログをいくつか持っています。
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
一部のgsubは、特に、基本的に同じことを行うために追加のライブラリ全体をロードすることを計画している場合は、最善の策のように聞こえます。