>From a quick scan of your question, perhaps ya2yaml
(http://rubyforge.org/projects/ya2yaml/) would help? 'Ya2YAML is "yet
another to_yaml". It emits YAML document with complete UTF8 support
(string/binary detection, "\u" escape sequences and Unicode specific
line breaks).'

On Thu, Sep 2, 2010 at 21:48, Tim Garnett <[email protected]> wrote:
> I'm using Rails 2.3.8 with Ruby 1.9.1 and I'm having a problem with
> serialized attributes in active record not preserving string encodings.
> The underlying problem is probably yaml, but I'm wondering if anyone has
> any good ideas on how to handle this.  The app I'm working on has
> numerous serialized fields some of which contain deep structures of
> arrays and hashes. Getting back an ASCII-8Bit string (that's actually
> UTF-8) deep within those structures wrecks havoc later...
>
> Perhaps best illustrated by example, if I save l to a serialized attr in
> an active record model I'll get back l2 on reading from the database.
>
>>> l
> => ["English", "Türkçe", "Русский"]
>>> l.map(&:encoding)
> => [#<Encoding:UTF-8>, #<Encoding:UTF-8>, #<Encoding:UTF-8>]
>>> l.map(&:valid_encoding?)
> => [true, true, true]
>>> l.to_yaml
> => "--- \n- English\n- !binary |\n  VMO8cmvDp2U=\n\n-
> \"\\xD0\\xA0\\xD1\\x83\\xD1\\x81\\xD1\\x81\\xD0\\xBA\\xD0\\xB8\\xD0\\xB9\"\n"
>>> l2 = YAML.load(l.to_yaml)
> => ["English", "T\xC3\xBCrk\xC3\xA7e", "Русский"]
>>> l2.map(&:encoding)
> => [#<Encoding:UTF-8>, #<Encoding:ASCII-8BIT>, #<Encoding:UTF-8>]
>
> Does anyone know how yaml decides on whether or not to store a string as
> binary vs. as an escaped string? Both the last two strings above are
> non-ascii-7 but only the first is stored as binary...
> --
> Posted via http://www.ruby-forum.com/.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "rails-i18n" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/rails-i18n?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"rails-i18n" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rails-i18n?hl=en.

Reply via email to