具有嵌套密钥的Ruby编码问题
为了解决这个问题,我正在尝试用Ruby编写一个命令行脚本。问题是我对Ruby完全不熟悉 因此,我制作了以下脚本:具有嵌套密钥的Ruby编码问题,ruby,Ruby,为了解决这个问题,我正在尝试用Ruby编写一个命令行脚本。问题是我对Ruby完全不熟悉 因此,我制作了以下脚本: require 'json' require 'yaml' thing = YAML.load('--- author_id: - 0 - 1 subject: - "" - !binary | 0KHQtNC10LvQsNGC0Ywg0LPRgNCw0LzQvtGC0L3Ri9C5INCy0L3QtdGI0L3Q uNC5INCy0LjQtCDQtNC70Y8g0L
require 'json'
require 'yaml'
thing = YAML.load('---
author_id:
- 0
- 1
subject:
- ""
- !binary |
0KHQtNC10LvQsNGC0Ywg0LPRgNCw0LzQvtGC0L3Ri9C5INCy0L3QtdGI0L3Q
uNC5INCy0LjQtCDQtNC70Y8g0LjQvNC10Y7RidC10LPQvtGB0Y8=
')
puts thing.to_json
# puts thing['subject'][1].to_json # Issues the same error
现在我得到了yaml2json.rb:15:in
encode':“\xD0”从ASCII-8BIT到UTF-8(Encoding::UnfinedConversionError)`
如何让它认为解码后的base64是UTF-8?通常我不知道钥匙的确切名称,subject
只是一个例子
thing['subject'][1].force_encoding('utf-8')
puts thing.to_json
产生:
{"author_id":[0,1],"subject":["","Сделать грамотный внешний вид для имеющегося"]}
{“作者id”:[0,1],“主题”:[,“作者id”:]]
因为您不知道字符串将在哪里,所以现在想到的最佳选择是递归地遍历散列,强制对所有字符串进行编码。可能有更优雅的解决方案。哦,谢谢。你能推荐递归遍历的快照吗?我知道,这个愚蠢的问题,但我在Ruby方面太弱了。我最终做到了。谢谢你,我睡了几个小时。看起来你想出了一个很好的解决方案,作为你另一个问题的答案。