From: SASADA Koichi Date: 2010-12-06T21:04:18+09:00 Subject: [ruby-dev:42692] [Feature: trunk] String#encode(:fallback) should accept default handler  ささだです.  最近,String#encode は :fallback オプションによって,置換できない文字 を置き換えるための文字(列)のテーブルを渡すことができる,ということを知 りました. p "\u00A9".encode('sjis', fallback: {"\u00a9" => '(c)'}) #=> '(c)'  ただ,fallback オプションは Hash のデフォルトハンドラを見てくれないよ うです. h = Hash.new{'?'} h["\u00a9"] = '(c)' p "\u00A9\u00AA".encode('sjis', fallback: h) t.rb:3:in `encode': U+00AA from UTF-8 to Shift_JIS (Encoding::UndefinedConversionError) from t.rb:3:in `
'  マップを知っているものは特定の文字(列)に,知らないものはテキトーに "?" とかにしたい,という用途はあるんじゃないかと思うので,対応して貰える といいんじゃないかと思うんですが,どうでしょうか.  Proc とか,#[] を持っているオブジェクト一般に広げてもいいかもしれませ んが,その辺はお任せします. -- // SASADA Koichi at atdot dot net # すでにパチモンがパッチを持ってるようですが....