sketchucation logo sketchucation
    • Login
    โ„น๏ธ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    Ruby String Encoding

    Scheduled Pinned Locked Moved Developers' Forum
    5 Posts 3 Posters 1.0k Views 3 Watching
    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.
    • danielbowringD Offline
      danielbowring
      last edited by

      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
      • thomthomT Offline
        thomthom
        last edited by

        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
        • Dan RathbunD Offline
          Dan Rathbun
          last edited by

          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
          • danielbowringD Offline
            danielbowring
            last edited by

            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
            • Dan RathbunD Offline
              Dan Rathbun
              last edited by

              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