具有嵌套密钥的Ruby编码问题

具有嵌套密钥的Ruby编码问题,ruby,Ruby,为了解决这个问题,我正在尝试用Ruby编写一个命令行脚本。问题是我对Ruby完全不熟悉 因此,我制作了以下脚本: require 'json' require 'yaml' thing = YAML.load('--- author_id: - 0 - 1 subject: - "" - !binary | 0KHQtNC10LvQsNGC0Ywg0LPRgNCw0LzQvtGC0L3Ri9C5INCy0L3QtdGI0L3Q uNC5INCy0LjQtCDQtNC70Y8g0L

为了解决这个问题,我正在尝试用Ruby编写一个命令行脚本。问题是我对Ruby完全不熟悉

因此,我制作了以下脚本:

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方面太弱了。我最终做到了。谢谢你,我睡了几个小时。看起来你想出了一个很好的解决方案,作为你另一个问题的答案。