From: C:/Source/puppet/lib/puppet/util/windows/api_types.rb @ line 62 FFI::Pointer#read_wide_string: |
|
56: def read_wide_string(char_length, dst_encoding = Encoding::UTF_8, encode_options = {}) |
57: # char_length is number of wide chars (typically excluding NULLs), *not* bytes |
58: str = get_bytes(0, char_length * 2).force_encoding('UTF-16LE') |
59: str.encode(dst_encoding, str.encoding, encode_options) |
60: rescue Exception => e |
61: require 'pry'; binding.pry |
=> 62: Puppet.debug "Unable to convert value #{str.dump} to encoding #{dst_encoding} due to #{e.inspect}" |
63: raise |
64: end |
[1] pry(#<FFI::MemoryPointer>)> x = get_bytes(0, char_length * 2) |
=> "8\xB3zk\xF6\xBB\xDF\n\x18lK8\xA1\xAA\x96\xA9T0\tB \xFC\xF5\v\xC0>\xE2\xC0\xDAEI\x98\xC2h\x00\xD21\xE8*\xA2\xB2rW\xAF5R\xB8\xDDm\xB4n0\xE1\xD9\xDC@J\xA1\x86\xC3\b\xD8)q\x96\xED\x8A\xB50\x83\xC8J\xAB\xAD\xCA\xACI\x05\f\xFC\xE9\xD6A\xEF\xB5\t\xE7B\x1D\x18\fc\x1EM\x9BS\x83\xE8\xA6\x84c;\x87\xF5?e1\x97\x1C\xB9\xAA?\xDF@\xBB\xBCs\x9A\x18\x95\xFD<D\xB2\xA5\xE9\x8D\xC4\x93-\xABw\xBD\xF9\x9B\xA1w\xE0\a\r<\xB3\xCD\xD5\x00x\xD3V\x8CQ\xD1?g6\x99\xB6>\xBE\xBE\x05SB\bI\xA3\x8E\xAB\xDD\xA2Yl\xF3\xB5\xFC\x04\xC9\x8A\xB7`\xD9\x96\xC1\xFD=\xF4\xA8\xE4\xB3\xBC\xFCb\xDA\xC6\xF0\b\xD7\x89\xAABO\xAC\xB6\x1C\xC8\x8E\xD1\x80\x10Q\xFE\x00\x0F\x99\xAFB\xB5\xFBU\x8BJ\x1C\xEC'." |
[2] pry(#<FFI::MemoryPointer>)> x.encoding |
=> #<Encoding:ASCII-8BIT> |
[3] pry(#<FFI::MemoryPointer>)> x.force_encoding('UTF-16LE') |
=> "\uB338\u6B7A\uBBF6\u0ADF\u6C18\u384B\uAAA1\uA996\u3054\u4209\uFC20\u0BF5\u3EC0\uC0E2\u45DA\u9849\u68C2\uD200\uE831\uA22A\u72B2\uAF57\u5235\xB8\xDD\uB46D\u306E\xE1\xD9\u40DC\uA14A\uC386\x08\xD8\u7129\uED96\uB58A\u8330\u4AC8\uADAB\uACCA\u0549\uFC0C\uD6E9\uEF41\u09B5\u42E7\u181D\u630C\u4D1E\u539B\uE883\u84A6\u3B63\uF587\u653F\u9731\uB91C\u3FAA\u40DF\uBCBB\u9A73\u9518\u3CFD\uB244\uE9A5\uC48D\u2D93\u77AB\uF9BD\uA19B\uE077\u0D07\uB33C\uD5CD\u7800\u56D3\u518C\u3FD1\u3667\uB699\uBE3E\u05BE\u4253\u4908\u8EA3\xAB\xDD\u59A2\uF36C\uFCB5\uC904\uB78A\x60\xD9\uC196\u3DFD\uA8F4\uB3E4\uFCBC\x62\xDA\uF0C6\uD708\uAA89\u4F42\uB6AC\uC81C\uD18E\u1080\uFE51\u0F00\uAF99\uB542\u55FB\u4A8B\uEC1C\u2E27" |
[4] pry(#<FFI::MemoryPointer>)> x.encoding |
=> #<Encoding:UTF-16LE> |
[5] pry(#<FFI::MemoryPointer>)> x.encode(dst_encoding, str.encoding, encode_options) |