在 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"
我有一个从字符串转换为二进制的代码:
> 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"