Trying to convert output from a rest_client GET to the characters that are represented with escape sequences.
Input: ..."sub_id":"\u0d9c\u8138\u8134\u3f30\u8139\u2b71"...
(which I put in ‘all_subs’)
Match: m = /sub_id\"\:\"([^\"]+)\"/.match(all_subs.to_str) [1]
Print: puts m.force_encoding("UTF-8").unpack('U*').pack('U*')
But it just comes out the same way I put it in. ie, “\u0d9c\u8138\u8134\u3f30\u8139\u2b71”
However, if I convert a raw string of it:
puts "\u0d9c\u8138\u8134\u3f30\u8139\u2b71".unpack('U*').pack('U*')
The output is perfect as “ග脸脴㼰脹⭱”
What you’re getting when you parse the input string is actually this:
Which is not the same as:
Therefore one option is to
evalthe string so that ruby applies the codepoints:However note that there are security implications when running eval.
If the string is always like in your example. You could also do something like this, which is safe: