我有一个节点js脚本,它从服务器获取一些数据并得到可读字符串。
我用来将十六进制转换为字符串的函数如下:
function hex2a(hexx) {
var hex = hexx.toString();//force conversion
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
这适用于大多数字符串,但是当涉及外国字母时,我无法使其工作。
例如:
以下内容:
是我想在console.log cmd窗口中显示的字符串。
以十六进制表示如下(显然......):
D9 87 D9 86 DA AF 20 D8 B3 D9 88 D8 A7 D8 B1 5B
这就是在cmd中输出以下内容:
Ù?Ù?دسÙ?ار
如何让它工作,以便向我显示图像中显示的正确输出?
答案 0 :(得分:0)
对我来说,这似乎是UTF-8 see reference here
一种方法是使用\u
转义每个字符,如下所示console.log('\u00d9\u0087\u00D9');
在节点版本.12中this option
还有一些非常酷的模块可以帮到你,请查看the utf8 module
//from docs
// → '\xA9'
utf8.decode('\xF0\x90\x80\x81');