Преобразование шестнадцатеричной строки в Ruby с использованием французских символов - PullRequest
0 голосов
/ 20 марта 2019

Это связано с ruby ​​gem ruby-smpp, который я использую для своего проекта.

У меня есть строка байтов \u0000\xE0\u0000\xE2\u0000\xE1\u0000\xE8\u0000\xEA\u0000\xE9\u0000\xE7.Он представляет собой тело сообщения на французском языке (например, MO или мобильное сообщение).Фактическое содержание этого сообщения àâáèêéç.Просто интересно, как конвертировать \u0000\xE0\u0000\xE2\u0000\xE1\u0000\xE8\u0000\xEA\u0000\xE9\u0000\xE7 в àâáèêéç в Ruby.

Я пробовал

["\u0000\xE0\u0000\xE2\u0000\xE1\u0000\xE8\u0000\xEA\u0000\xE9\u0000\xE7"].pack('H*')

=> "\x00\x02\x01\b\n\t\a"

и

['E0','E2','E1','E8', 'EA', 'E9', 'E7'].pack('H*')
=> "\xE0"

Оба не правы.

Заранее спасибо!

1 Ответ

4 голосов
/ 20 марта 2019

Похоже, ваша строка в кодировке UTF-16BE:

str = "\u0000\xE0\u0000\xE2\u0000\xE1\u0000\xE8\u0000\xEA\u0000\xE9\u0000\xE7"

str.encode('UTF-8', 'UTF-16BE')
#=> "àâáèêéç"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...