2012-04-15 8 views
8

İş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.

+1

Neden ilk etapta 'BINARY' kodlamayı zorluyor kendi cevap var mı? –

+0

Çünkü bazen "\ xFE \ xFF \ x00 \ x00" gibi ikili dizelerle uğraşıyorum ve UTF-8isms istemiyorum. –

+0

Ayrıca, burada sadece bir örnek. Benim gerçek kullanım durumum biraz daha karmaşıktır :) –

cevap

4

Güncelleme:

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

Dünyada eski bir YAML ayrıştırıcısını zorlamak gitmek için iyi bir yol değil, bu soruya daha fazla yanıt almak ister – bbozo

İlgili konular