Maybe each_char() will work for you?  Take a look at the following code.

str = "\xE2\x82\xAC\xE2\x82\xAC"
puts str.encoding

str.force_encoding("UTF-8")
puts str.encoding

chars = str.each_char.to_a
p chars

puts chars[0].encoding

puts chars.join

--output:--
ASCII-8BIT
UTF-8
["\u20AC", "\u20AC"]
UTF-8


(You should see two euro symbols as the last line of output.)

The output implies that a string with unicode escapes is given a UTF-8 encoding by default.   And that seems to be the case:

str = "\u20AC\u20AC"
puts str.encoding

--output:--
UTF-8