Aquí está el problema: podría tener cadenas que son UTF-8, y podría tener cadenas que son US-ASCII. Independientemente de la codificación, me gustaría que YAML.dump (str) descargue realmente los objetos String
, en lugar de estos objetos inútiles !binary
como se muestra en el ejemplo.¿Cómo obtengo YAML en Ruby desde 1.9.3 para volcar cadenas ASCII-8Bit como cadenas?
¿Hay una bandera o algo que no veo para forzar a YAML.dump() a hacer lo correcto?
de Ruby 1.9.1 ejemplo
YAML::VERSION # "0.60"
a = "foo" # => "foo"
a.force_encoding("BINARY") # => "foo"
YAML.dump(a) # => "--- foo\n"
de Ruby 1.9.3 ejemplo
YAML::VERSION # "1.2.2"
a = "foo" # => "foo"
a.force_encoding("BINARY") # => "foo"
YAML.dump(a) # => "--- !binary |-\n Zm9v\n"
Actualización: Tengo mi propia respuesta
YAML::ENGINE.yamler='syck'
YAML.dump(a) # => "--- foo\n"
Por lo tanto, parece que usar el viejo motor de yamler con fuerza el antiguo comportamiento.
¿Por qué estás forzando la codificación a 'BINARY' en el primer lugar? –
Porque a veces estoy tratando con cadenas binarias, como "\ xFE \ xFF \ x00 \ x00" y no quiero UTF-8isms. –
Además, aquí, es solo un ejemplo. Mi caso de uso real es un poco más complicado :) –