From: Perry Smith Date: 2011-10-13T11:53:54+09:00 Subject: [ruby-core:40130] Marshaling question I am chasing a bug in my Rails app. I've tracked it down to something in memcache-client. I'm not the owner of this code but wanted to supply a patch to fix it but I have some questions. The code (in very simple terms) is doing: 1: value = Marshal.dump value 2: command = "build up a string with various things including #{value}" later, it does: socket.write(command) The problem is "build up a string..." is either UTF-8 or US-ASCII but value has an encoding of ASCII-8BIT. So line 2 above raises an incompatible character encoding exception. What would be the best way to solve this? I could force the encoding of value to UTF-8 (after the marshaling statement). That was my first thought. But, why is it encoded with 8 bit? I'm wondering if there is a reason for that. The socket.write could be broken up into socket.write "build up a string with various things include " socket.write value but... socket is going to have an encoding too -- isn't it? In this particular case, I've set Ruby's internal and external encoding to UTF-8. I'm also wondering if perhaps this isn't a bug with Marshal since it says it encodes it to a string. I would interpret that on the surface as encoding it to a string with the current encoding. I'm using Ruby 1.9.2 p290 Thank you for your time, pedz