【问题标题】:Undo string to binary in ruby在ruby中将字符串撤消为二进制
【发布时间】:2017-10-09 05:19:33
【问题描述】:

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

> 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)?

【问题讨论】:

  • 有一个打包方法,但我不确定您需要提供什么参数来反转解包..

标签: ruby string binary unpack


【解决方案1】:

转换相当于:

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"

它可以通过以下方式“反转”:(您可能需要调整'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"

【讨论】:

  • 正如我刚刚检查的,还有encode 方法实际上会改变字符串。
  • @FranMartinez 您是否要修复损坏的字符串?我添加了一个示例。
猜你喜欢
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 2014-11-10
  • 2011-08-15
  • 1970-01-01
  • 2021-02-24
相关资源
最近更新 更多