8
問題出在這裏:我可能有UTF-8字符串,我可能有US-ASCII字符串。無論編碼如何,我都希望YAML.dump(str)實際轉儲String
對象,而不是像這些示例所示的那些無用的!binary
對象。如何在Ruby 1.9.3中將YAML轉儲爲ASCII-8Bit字符串作爲字符串?
有沒有標誌或我沒有看到的東西強迫YAML.dump()做正確的事情?
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引擎強制舊的行爲。
你爲什麼要強迫編碼'BINARY'擺在首位? – 2012-04-15 21:42:07
因爲有時我正在處理二進制字符串,如「\ xFE \ xFF \ x00 \ x00」,我不想使用UTF-8isms。 – 2012-04-15 21:46:46
此外,這裏只是一個例子。我的真實用例稍微複雜一點:) – 2012-04-16 00:20:39