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.
