方法中是否有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")产生相同的结果(当然,假设a以前是 UTF-8)并且字符串中的字节不会被修改。但是,字符串状态被修改,因此这种方法是破坏性的。例如:
a="a"
a.freeze
a.force_encoding("BINARY")
# raises error