Расшифруйте Hex to String с китайскими иероглифами в JavaScript

1

Я конвертирую гекс в строку. У меня есть hexstring: "0xe4b883e5bda9e7a59ee4bb99e9b1bc" и использовать этот код:

hex_to_ascii(str1){
  var hex  = str1.toString().substring(2, str1.length);
  var str = '';
  for (var n = 0; n < hex.length; n += 2) {
    str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));
  }
  return str;
}

правильный ответ должен быть "七彩 神仙 鱼", но мой ответ "ä¸å½ ç ¥ ä" é ± ¼ ". Что не так с моим кодом. Пожалуйста, помогите мне, спасибо.

  • 0
    Как вы получили эту шестнадцатеричную строку, не должно ли это быть "4e035f69795e4ed99c7c"?
  • 0
    0xe4b883e5bda9e7a59ee4bb99e9b1bc - это ответ от бэкэнда. В интерфейсе я должен преобразовать его в строку и показать.
Показать ещё 4 комментария
Теги:
hex
ethereum
decode

1 ответ

0
Лучший ответ

Шестнадцатеричная строка представляет текст на китайском языке, закодированный в виде последовательности байтов с использованием кодировки UTF-8.

Если вы удалите начальный "0x" из шестнадцатеричной строки и вставите символ "%" перед каждыми двумя символами, вы получите строку, подобную этой:

%e4%b8%83%e5%bd%a9%e7%a5%9e%e4%bb%99%e9%b1%bc

Вот как это будет выглядеть в URI, и вы можете декодировать его обратно из UTF-8, используя decodeURIComponent, как, например, в:

"use strict";
var hex = "0xe4b883e5bda9e7a59ee4bb99e9b1bc";
hex = hex.substr(2);
hex = hex.replace( /../g , hex2=>('%'+hex2));
var string = decodeURIComponent(hex);
console.log(string);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню