8

问题是:我可能有 UTF-8 字符串,也可能有 US-ASCII 字符串。无论编码如何,我都希望 YAML.dump(str) 实际转储对象,而不是示例所示String的这些无用对象。!binary

是否有标志或我没有看到强制 YAML.dump() 做正确的事情?

Ruby 1.9.1 示例

YAML::VERSION              # "0.60"
a = "foo"                  # => "foo"
a.force_encoding("BINARY") # => "foo"
YAML.dump(a)               # => "--- foo\n" 

Ruby 1.9.3 示例

YAML::VERSION              # "1.2.2"
a = "foo"                  #  => "foo" 
a.force_encoding("BINARY") #  => "foo" 
YAML.dump(a)               # => "--- !binary |-\n  Zm9v\n"

更新:得到我自己的答案

YAML::ENGINE.yamler='syck'
YAML.dump(a)               # => "--- foo\n" 

所以,看起来像使用旧的 yamler 引擎强制旧的行为。

4

1 回答 1

4

更新:得到我自己的答案

YAML::ENGINE.yamler='syck'
YAML.dump(a)               # => "--- foo\n" 
于 2012-05-03T03:02:17.477 回答