这与我用于项目的ruby gem ruby-smpp有关。
我有一个字节字符串\u0000\xE0\u0000\xE2\u0000\xE1\u0000\xE8\u0000\xEA\u0000\xE9\u0000\xE7
。它以法语接收的消息(即MO或移动设备发起的消息)表示消息的正文。该消息的实际内容为àâáèêéç
。只是想知道如何在Ruby中将\u0000\xE0\u0000\xE2\u0000\xE1\u0000\xE8\u0000\xEA\u0000\xE9\u0000\xE7
转换为àâáèêéç
。
我尝试过
["\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"
都错了。
谢谢!
答案 0 :(得分:4)
看起来您的字符串是UTF-16BE编码的:
str = "\u0000\xE0\u0000\xE2\u0000\xE1\u0000\xE8\u0000\xEA\u0000\xE9\u0000\xE7"
str.encode('UTF-8', 'UTF-16BE')
#=> "àâáèêéç"