Преобразование шестнадцатеричного числа в строковое - Ruby - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь преобразовать шестнадцатеричный код в строку, используя Ruby, и он не работает с некоторыми китайскими иероглифами.Я новичок в Ruby.

Текущий код работает нормально с некитайскими символами, но теперь код должен поддерживать китайские символы.Он преобразует шестнадцатеричный код в строку, используя кодировщик ISO-8859-1 и UTF-8:

extractpayload = "e5b7b2e5ae8ce68890e38082e68891e4bbace5b086e59ca8e5aea1e6a0b8e5b9b6e7a1aee8aea4e8aea2e58d95e5908ee58f91e8b4a7efbc8ce5b9b6e7ab8be58db3e4bba5e79fade4bfa1e5bda2e5bc8fe9809ae79fa5e682a8e3808220e69fa5e79c8be8aea2e58d95e4bfa1e681afe68896e7aea1e79086e794b5e5ad90e58f91e7a5a8";

gettransformedfullpayload1 = [extractpayload].pack("H*").force_encoding("ISO-8859-1").encode("UTF-8");

ссылка repl.it: https://repl.it/@bonsshah/Ruby-Hexdecimal-to-String-Conversion

Ожидаемый результат:

已完成。我们将在审核并确认订单后发货,并立即以短信形式通知您。 查看订单信息或管理电子发票

В настоящее время выводится неверно:

å·²å®æãæ们å°å¨å®¡æ ¸å¹¶ç¡®è®¤è®¢åååè´§ï¼å¹¶ç«å³ä»¥ç­ä¿¡å½¢å¼éç¥æ¨ã æ¥ç订åä¿¡æ¯æ管ççµå­å票

1 Ответ

3 голосов
/ 29 мая 2019

Это уже шестнадцатеричный код UTF-8.

str = "e5b7b2e5ae8ce68890e38082e68891e4bbace5b086e59ca8e5aea1e6a0b8e5b9b6e7a1aee8aea4e8aea2e58d95e5908ee58f91e8b4a7efbc8ce5b9b6e7ab8be58db3e4bba5e79fade4bfa1e5bda2e5bc8fe9809ae79fa5e682a8e3808220e69fa5e79c8be8aea2e58d95e4bfa1e681afe68896e7aea1e79086e794b5e5ad90e58f91e7a5a8" => "e5b7b2e5ae8ce68890e38082e68891e4bbace5b086e59ca8e5aea1e6a0b8e5b9b6e7a1aee8aea4e8aea2e58d95e5908ee58f91e8b4a7efbc8ce5b9b6e7ab8be58db3e4bba5e79fade4bfa1e5bda2e5bc8fe9809ae79fa5e682a8e3808220e69fa5e79c8be8aea2e58d95e4bfa1e681afe68896e7aea1e79086e794b5e5ad90e58f91e7a5a8"
[str].pack('H*').force_encoding('utf-8') => "已完成。我们将在审核并确认订单后发货,并立即以短信形式通知您。 查看订单信息或管理电子发票"
...