有没有办法让心理转换为特定的编码?

时间:2013-11-19 18:52:51

标签: ruby yaml

我有一些数据是我通过dbi gem从数据库中提取的。返回的数据采用ASCII-8BIT编码。我已将它存储在哈希中,然后我将其作为yaml转储出来。问题是,它出现为二进制yaml,就像这样:

!binary "c3RhcnRfZGF0ZQ==": !binary |-
  MjAxMy0xMC0wMQ==

我不想要这个。到目前为止,我所做的研究提出了一些可能性:

YAML::ENGINE.yamler = 'syck'

这样可行,但据我所知,syck不再被维护,因此看起来不太理想。

# encoding: utf-8

但我相信魔术编码字符串不适用于从数据库中提取的数据。

我也尝试过哈希并通过encode方法将所有键和值转换为utf-8,但我也不喜欢。我理想的是能够做的事情就像YAML.dump(hash, :encode => 'utf-8'),但我还没有找到办法。有没有办法用精神YAML引擎专门完成这个?

一些演示此问题的快速代码:

require 'yaml'

key = 'abc'.encode('ASCII-8BIT')
val = 'def'.encode('ASCII-8BIT')

hash = { key => val }

puts YAML.dump(hash)
# ---
# !binary "YWJj": !binary |-
#  ZGVm

0 个答案:

没有答案