Javascript 如何将十六进制二进制数据转换为unicode字符串

Javascript 如何将十六进制二进制数据转换为unicode字符串,javascript,node.js,Javascript,Node.js,我试图从node.js上的二进制数据“解码”Unicode字符串 const convert = (from, to) => (str) => Buffer.from(str, from).toString(to); const hexToUtf8 = convert('hex', 'utf8'); const content = hexToUtf8(data.binary) 但当我发送以下数据时: 从您的Twilio试用帐户发送-Cómo estás 它正在转换为 从您的Twil

我试图从node.js上的二进制数据“解码”Unicode字符串

const convert = (from, to) => (str) => Buffer.from(str, from).toString(to);
const hexToUtf8 = convert('hex', 'utf8');
const content = hexToUtf8(data.binary)
但当我发送以下数据时:

从您的Twilio试用帐户发送-Cómo estás

它正在转换为

从您的Twilio试用帐户发送-�C�最�s


二进制数据是
53656E742066726F6D20796F7577220547696C696F207472696616C206163636F756E74202D20BF43F36D6F20657374E1733F

看起来您的字节被编码为拉丁文1:

let data = "53656e742066726f6d20796f7572205477696c696f20747269616c206163636f756e74202d20bf43f36d6f20657374e1733f"
let b = Buffer.from(data, 'hex')
console.log(b.toString('latin1'))
打印

Sent from your Twilio trial account - ¿Cómo estás?

嗨,谢谢你的回答。但我事先并不知道编码。它也可以是中文文本。例如,这本书包含一个中文文本:
00530065006E00740020000660072006F006D002000079006F0075007200200005400770069006C0069006F002000074007200690061006C00200006100630063006F0075006E00740020000200204E0956FD6F144E49
如果你不知道字符是如何转换成十六进制的,那就很难解码了。例如,上面的代码在拉丁语1中编码为
e1
。它将是两个字节:utf8中的
c3a1
,在拉丁语中类似于
Ã
。但是谁能说
Ã
不对呢?这就是为什么这一点一直备受争议的原因,也是为什么采用unicode非常有帮助的原因。