İşte sorun: UTF-8 dizeleri olabilir ve ABD-ASCII dizeleri olabilir. Kodlamadan bağımsız olarak, YAML.dump (str) örneklerinin gösterildiği gibi bu işe yaramaz !binary
nesnelerinin yerine String
nesnesini dökmesini istiyorum.ASCII-8Bit dizeleri dizeler olarak dökmek için YAML'yi 1.9.3 olarak nasıl alabilirim?
YAML.dump() öğesini doğru şeyi yapmak için zorlamayı görmediğim bir bayrak ya da bir şey var mı?
Yakut 1.9.1 örnek
YAML::VERSION # "0.60"
a = "foo" # => "foo"
a.force_encoding("BINARY") # => "foo"
YAML.dump(a) # => "--- foo\n"
Yakut 1.9.3 örnek
YAML::VERSION # "1.2.2"
a = "foo" # => "foo"
a.force_encoding("BINARY") # => "foo"
YAML.dump(a) # => "--- !binary |-\n Zm9v\n"
Güncelleme: Got kendi cevap
YAML::ENGINE.yamler='syck'
YAML.dump(a) # => "--- foo\n"
Eski yamler motorunu eski davranışı zor kullanarak kullanıyor.
Neden ilk etapta 'BINARY' kodlamayı zorluyor kendi cevap var mı? –
Çünkü bazen "\ xFE \ xFF \ x00 \ x00" gibi ikili dizelerle uğraşıyorum ve UTF-8isms istemiyorum. –
Ayrıca, burada sadece bir örnek. Benim gerçek kullanım durumum biraz daha karmaşıktır :) –