方法中是否有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