Ruby String Encoding
-
Is it possible to force the string encoding to UTF-8?
I'm trying to Marshal objects to strings and then store them in attribute dictionaries, but its possible for then dump to contain the null character which causes the string to be terminated when added to the dictionary. I'm hoping to just swap the null characters out for a different string on write, then swap back to null on read but I can't get the null character into memory.
Including the character in a file will make the file unable to load, and I can't figure out string encoding so I can't use \x00. Ruby 1.9.3 provides String_instance.force_encoding('UTF-8'), but Sketchup 8 uses 1.8.6 which doesn't have that method.
I guess what I'm asking is if anybody knows how to force encoding in ruby 1.8.6 or if there is another to store data within the skp file.
Thanks in advance.
-
Yea, unicode is an issue: http://forums.sketchucation.com/viewtopic.php?f=180&t=20657
And I ran into the same problems with Marshalling objects: http://forums.sketchucation.com/viewtopic.php?f=180&t=36448&p=320853
I ended up with using base64 - though it troubled me as the data got bigger.
-
FYI:
0.chr
returns the null character.What kind of objects are you storing in attributes ??
Sometimes it's easier to use.inspect()
to build the string data to store, rather than marshaling. -
Thanks, base64 encoding fixes the issue.
I'm storing complex types, basically class instances (or at least the information I can use to regenerate them). -
Looks a good place to pass on a nice link on String Encoding (that was posted to the ruby-talk-google.)
http://blog.grayproductions.net/categories/character_encodings
Advertisement