force_encoding
呼び出し元オブジェクトを変更しないメソッドのバージョンはありますか?
したがって、現在の force_encoding は次のように機能します。
> a
=> "Ü"
> a.force_encoding("BINARY")
=> "\xC3\x9C"
> a
=> "\xC3\x9C"
結果を次のようにしたいと思います。
> a
=> "Ü"
> a.force_encoding_non_destructive("BINARY")
=> "\xC3\x9C"
> a
=> "Ü"
同じ結果が得られることを完全に理解していることに注意してくださいa.force_encoding("UTF-16LE").force_encoding("UTF-8")
(もちろん、以前はUTF-8であったと仮定しa
ます)。文字列のバイトは変更されません。ただし、文字列の状態が変更されるため、このメソッドは破壊的です。例えば:
a="a"
a.freeze
a.force_encoding("BINARY")
# raises error