データベースにはさまざまな種類のハイフン/ダッシュ (一部のテキスト) が入力されています。それらをユーザー入力テキストと比較する前に、任意のタイプのダッシュ/ハイフンを単純なハイフン/マイナス (ASCII 45) に正規化する必要があります。
変換する必要がある可能性のあるダッシュは次のとおりです。
Minus(−) U+2212 − or − or −
Hyphen-minus(-) U+002D -
Hyphen(-) U+2010
Soft Hyphen U+00AD ­
Non-breaking hyphen U+2011 ‑
Figure dash(‒) U+2012 (8210) ‒ or ‒
En dash(–) U+2013 (8211) –, – or –
Em dash(—) U+2014 (8212) —, — or —
Horizontal bar(―) U+2015 (8213) ― or ―
これらはすべて、gsub を使用してハイフンマイナス (-) に変換する必要があります。CharDet gem を使用して、フェッチされた文字列の文字エンコーディング タイプを検出しました。windows-1252が表示されています。エンコーディングをASCIIに変換するためにIconvを試しました。しかし、例外Iconv::IllegalSequenceをスローしています。
ruby -v => ruby 1.8.7 (2009-06-12 パッチレベル 174) [i686-darwin9.8.0]
rails -v => Rails 2.3.5
mysql エンコーディング => 'latin1'
これを達成する方法はありますか?