在 ruby 中将字符串撤消为二进制

Undo string to binary in ruby

我有一个从字符串转换为二进制的代码:

> s = "Anatomía Según Grey"
=> "Anatomía Según Grey"

> s.unpack("a*").first
=> "Anatom\xC3\x83\xC2\xADa Seg\xC3\x83\xC2\xBAn Grey"

如何获取原始字符串(撤消 unpack)?

转换等价于:

s = "Anatomía Según Grey"
#=> "Anatomía Según Grey"

s.force_encoding('BINARY')
#=> "Anatom\xC3\x83\xC2\xADa Seg\xC3\x83\xC2\xBAn Grey"

可以 "reversed" 通过:(您可能需要调整 'UTF-8' 部分)

s.force_encoding('UTF-8')
#=> "Anatomía Según Grey"

force_encoding 不会改变字符串,它只是定义字节的解释方式。

要修复字符串,您可能还需要调用 encode

"Anatomía Según Grey".encode('ISO-8859-1').force_encoding('UTF-8')
#=> "Anatomía Según Grey"