こんにちは。ima1zumi です。 私の開発している Rails アプリでは、Excel で読み込めるように 文字コードを Windows-31J に変換して CSV を出力する機能があります。 先日、CSV 出力にて Unicode の波ダッシュ 〜 を Windows-31J に変換しようとして Encoding::UndefinedConversionError が発生して CSV 出力に失敗したことがありました。なぜエラーになるのか、どうやって対応するのかをまとめました。 まとめ encode メソッドの fallback オプションを使って未定義文字の変換先を定義することで変換できます。 str = "\u{2014 301C 2016 2212 00A2 00A3 00AC}" undefined_signs = { "\u2014" => "\x81\x5C".force_