私は次のバージョンのRubyを使用しています(そして固執しています):
ruby 1.8.7 (2012-06-29 patchlevel 370) [x86_64-linux]
私はたくさんのグーグルを試しましたが、私の問題に対する有効な答えが見つかりません. 通常、ユーザーの Microsoft Excel スプレッドシートから取得される CSV ファイルをインポートしています。CSV 部分に問題はありませんが、MS の「スマート」引用符の処理方法がわかりません。テスト用の入力ファイルは DOS 形式で、次の行が含まれています。
ジャンヌ・オニール
O'Neill の O と N の間に MS のカーリー アポストロフィがあり、テキスト エディタでは「疑問符のひし形」として表示されます。次のコードを試すと、カーリー アポストロフィが削除されます。
# replace Microsoft Office 'smart' quotes
# gem to detect character encoding
require 'rchardet'
if name != nil
cd = CharDet.detect(name)
encoding = cd['encoding']
name = Iconv.conv('UTF-8//TRANSLIT', encoding, name)
end
これにより、望ましくない出力が得られます。
ジャンヌ・オニール
Ruby 1.8.7 で、カーリー MS 文字を検出してストレート文字に置き換える正規表現を作成する方法はありますか? 正規表現で 16 進コードを使用しようとしましたが、機能させることができません。Ruby 1.8.7 では文字エンコーディングの処理が 1.9 よりもはるかに制限されていることは承知していますが、私はそれに固執しています。現在、このプロジェクトで Ruby をアップグレードすることはできません。
どんな助けでも大歓迎です。ありがとうございました。
TinMan によって提案された投稿を読んだ後、gsub を使用して結果の '�' 部分文字列を置き換えてみました。
if name != nil
name = Iconv.conv("UTF-8", "cp1252//TRANSLIT", name)
name.gsub(/\u00ef\u00bf\u00bd/u, "'")
end
悲しいかな、愛はありません。それでも同じ結果が得られます:(