Ruby 1.9.3 用の DocSplit gem を使用して、Word ドキュメントの Unicode UTF-8 バージョンを作成しています。今日驚いたことに、これらのドキュメントの 1 つの特定の部分でテストを実行しているときに、文字エンコードの不一致に遭遇し始めました。
以下にリストする問題を解決するためにさまざまな方法を試しましたが、これまでのところ、非 ASCII 文字をすべて削除するのが最善の方法でした。これは理想とはかけ離れたものです。なぜなら、DB でキャラクターがそれほど問題になるとは思わないからです。
gsub(/[^[:ascii:]]/, "")
これは、私の出力がどのように見えるか、および私が期待しているもののサンプルです。
My CODES'S APOSTROPHE
My CODES’S APOSTROPHE
2 番目のアポストロフィは波線になっている必要があります。これを irb に貼り付けると、次のようになります: \U+FFE2
このキャラクター専用の正規表現を試してみたところ、Rubular で動作するようです。ただし、モデルに入れるとすぐに、構文エラーが発生しました。
syntax error, unexpected $end, expecting ')'
raw_title = raw_title.gsub(/’/, "")
また、エンコードを UTF-8 に強制しようとしましたが、すべてが既に UTF-8 であり、これは効果がないようです。出力を US-ASCII に強制しようとしましたが、バイト シーケンス エラーが発生します。
また、Ruby ライブラリにあるエンコーディング オプションもいくつか試しました。これらは基本的に正規表現と同じことを行いました。
これはすべて、テスト目的で出力を一致させようとしていることに帰着します。これらの特殊文字についても心配する必要がありますか? これらの文字をやみくもに削除せずに一致させるより良い方法はありますか?