在javascript中用中文字符将十六进制解码为字符串

时间:2019-01-08 11:18:44

标签: javascript hex decode ethereum

我将十六进制转换为字符串。我有一个十六进制字符串:“ 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;
}

正确的回答必须是“七彩神仙鱼”,但我的回答是“ä¸å½©ç¥ä»é±¼”。 我的代码有什么问题。请帮助我,谢谢。

1 个答案:

答案 0 :(得分:1)

十六进制字符串表示使用UTF-8编码按字节序列编码的中文文本。

如果从十六进制字符串中删除前导“ 0x”并在每两个字符之前插入一个“%”字符,则会得到如下字符串:

this.audio.play()
this.audio.pause()

这是它在URI中的外观,您可以使用%e4%b8%83%e5%bd%a9%e7%a5%9e%e4%bb%99%e9%b1%bc 从UTF-8解码回去,例如:

decodeURIComponent