From: Yuki Sonoda Date: 2011-05-31T11:48:43+09:00 Subject: [ruby-dev:43601] [Backport92 - Backport #4125][Closed] String#encode(:fallback) should accept default handler Issue #4125 has been updated by Yuki Sonoda. Status changed from Assigned to Closed I regard this issue as an enhancement. So I don't merge r30118. ---------------------------------------- Backport #4125: String#encode(:fallback) should accept default handler http://redmine.ruby-lang.org/issues/4125 Author: Koichi Sasada Status: Closed Priority: Low Assignee: Yuki Sonoda Category: Target version: =begin  ささだです.  最近,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 # すでにパチモンがパッチを持ってるようですが.... =end -- http://redmine.ruby-lang.org