Это основано на ответе @ Дейва.Я использую следующее для замены всех escape-последовательностей Unicode в данной строке соответствующим символом:
string_value.gsub(/\\u([0-9a-fA-F]{4})/) {|m| [$1.hex].pack("U")}
Это регулярное выражение, которое ищет «\ u», за которым следуют 4 шестнадцатеричных символа.Затем он выбрасывает «\ u», преобразует 4 шестнадцатеричных символа в целое число и использует пакет, чтобы получить символ Unicode.Он заменяет каждую escape-последовательность соответствующим символом и возвращает результирующую строку.
Это создаст вам проблемы, если ваша строка будет экранирована (например, из-за того, что "\" экранирован как "\\").Но в случае с ванилью все должно работать нормально.