在 Ruby 1.8.7 中将带有二进制数据的 YAML 响应转换为 UTF-8
我正在从 API 中提取响应并收到:
response:
job:
unit_count: "1"
slug: Answers
lc_tgt: ja
body_tgt: !binary |
5Zue562U
lc_src: en
body_src: Answers
job_id: "1948888"
opstat: ok
That body_tgt 值应该是几个日语字符(回答),但它们正在被转换以安全运输。我使用的是 1.8.7,所以无法强制编码。有没有办法解压()它们?
I'm pulling a response from an API and receiving:
response:
job:
unit_count: "1"
slug: Answers
lc_tgt: ja
body_tgt: !binary |
5Zue562U
lc_src: en
body_src: Answers
job_id: "1948888"
opstat: ok
That body_tgt value should be a couple Japanese characters(回答), but they are being converted for safe shipping. I'm in 1.8.7, so I can't force_encoding. Is there a way to unpack() them?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这似乎是一个 YAML 文档,而不是 JSON,使用 YAML 的二进制数据语言(反过来使用 base64 编码)。
Ruby 内置的 YAML 解析库应该能够为您解析数据:
为了生成直接嵌入 UTF-8 的 YAML,而不是转义为二进制对象,您可以使用 ya2yaml,“另一个 to_yaml”实现,它可以生成编码为 UTF-8 的输出。安装
ya2yaml
gem,然后调用它:That appears to be a YAML document, not JSON, using YAML's binary data language (which in turn uses base64 encoding).
Ruby's built in YAML parsing library should be able to parse the data for you:
In order to produce YAML with UTF-8 directly embedded, instead of escaped as binary objects, you can use ya2yaml, "yet another to_yaml" implementation, which can produce output encoded as UTF-8. Install the
ya2yaml
gem, and then invoke it as: