Project

General

Profile

Actions

Backport #4125

closed

String#encode(:fallback) should accept default handler

Added by ko1 (Koichi Sasada) over 13 years ago. Updated almost 13 years ago.

Status:
Closed
[ruby-dev:42692]

Description

=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

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0