在javascript中将Unicode解码为字符

在javascript中将Unicode解码为字符,javascript,utf-8,utf-16,Javascript,Utf 8,Utf 16,我有以下unicode序列: d76cb9dd0020b370b2c8c758 我在这个实验中随机尝试了非英语字符,我尝试了韩语作为上述unicode行的原文: 희망 데니의 如何将上述unicode序列解码为原始格式?如何 var str = 'd76cb9dd0020b370b2c8c758'; str = '"'+str.replace(/([0-9a-z]{4})/g, '\\u$1')+'"'; alert(JSON.parse(str));

我有以下unicode序列:

          d76cb9dd0020b370b2c8c758
我在这个实验中随机尝试了非英语字符,我尝试了韩语作为上述unicode行的原文:

          희망 데니의
如何将上述unicode序列解码为原始格式?

如何

var str = 'd76cb9dd0020b370b2c8c758';
str = '"'+str.replace(/([0-9a-z]{4})/g, '\\u$1')+'"';
alert(JSON.parse(str));

作为JavaScript字符串文字,用\u转义十六进制代码:

或者只需在字符串中输入韩语字符:

var koreanString = "희망 데니의";
要处理表示unicode字符的十六进制字符串,请将十六进制字符串解析为数字,然后使用string.fromCharCode生成unicode字符串:

这将返回6。没有英语字符串。您有一个表示十六进制数的字符串,十六进制数由拉丁字符集中的字符组成,但这些字符不在任何口语中。它们只是数字。当然,您可以使用length属性获取十六进制字符串的长度,但我不确定您为什么要这样做。更直接的做法是使用数字数组而不是字符串:

var charCodes = [0xd76c, 0xb9dd, 0x0020, 0xb370, 0xb2c8, 0xc758];
var koreanString = String.fromCharCode.apply(null, charCodes);

这样,charCodes.length将与koreanString.length相同。

上面的顺序是什么?它不是有效的十六进制编码UTF-8。看起来像是UTF-16BE,你从哪里弄来的?@JanDvorak:我想是的,因为我是从总部的远程办公室弄来的。我只是使用并试图找出如何解码它,幸运的是,穆萨和吉利3已经给出了正确的答案。非常感谢,穆萨和你都给出了正确的答案。顺便说一句,我怎么知道韩国串的长度?是“我”写的吗?@DoniAndriCahyono-我编辑了我的答案,并就访问字符串长度发表了一些评论。我将使用它来确定稍后通过短信/文本使用的字符长度,因为我正在开发基于网络的短信,它必须符合国际字符。谢谢你,谢谢。你和吉莉的答案都是我要找的。顺便说一句,我怎么知道它的str的长度呢?@DoniAndriCahyono只需使用字符串的length属性。我的意思是,unicode字符的长度不同于英文字符,对吗?那么,我如何确定这一点呢?它是否使用您已经给出的长度属性?
var hex = "d76cb9dd0020b370b2c8c758";
var koreanString = "";
for (var i = 0; i < hex.length; i += 4) {
    koreanString += String.fromCharCode(parseInt(hex.substring(i, 4), 16));
}
var stringLength = koreanString.length;
var charCodes = [0xd76c, 0xb9dd, 0x0020, 0xb370, 0xb2c8, 0xc758];
var koreanString = String.fromCharCode.apply(null, charCodes);