• Login
sketchucation logo sketchucation
  • Login
ℹ️ GoFundMe | Our friend Gus Robatto needs some help in a challenging time Learn More

Ruby String Encoding

Scheduled Pinned Locked Moved Developers' Forum
5 Posts 3 Posters 1.0k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    danielbowring
    last edited by 16 Nov 2011, 04:30

    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.

    1 Reply Last reply Reply Quote 0
    • T Offline
      thomthom
      last edited by 16 Nov 2011, 07:25

      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. 😞

      Thomas Thomassen — SketchUp Monkey & Coding addict
      List of my plugins and link to the CookieWare fund

      1 Reply Last reply Reply Quote 0
      • D Offline
        Dan Rathbun
        last edited by 16 Nov 2011, 18:20

        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.

        I'm not here much anymore.

        1 Reply Last reply Reply Quote 0
        • D Offline
          danielbowring
          last edited by 17 Nov 2011, 02:18

          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).

          1 Reply Last reply Reply Quote 0
          • D Offline
            Dan Rathbun
            last edited by 19 May 2012, 01:30

            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

            I'm not here much anymore.

            1 Reply Last reply Reply Quote 0
            • 1 / 1
            • First post
              Last post
            Buy SketchPlus
            Buy SUbD
            Buy WrapR
            Buy eBook
            Buy Modelur
            Buy Vertex Tools
            Buy SketchCuisine
            Buy FormFonts

            Advertisement