utf 8 - 在javascript中将Unicode解码为字符

utf 8 - Decode Unicode to character in javascript

本文关键字:Unicode 解码 字符 中将 javascript utf      更新时间:2023-09-26

我有以下 unicode 序列:

          d76cb9dd0020b370b2c8c758
我随机尝试了

非英语字符(对于这个实验,我尝试了韩语语言)作为上述 unicode 行的原文:

          희망 데니의

如何将上述 unicode 序列解码为原始形式?

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

var koreanString = "'ud76c'ub9dd'u0020'ub370'ub2c8'uc758";

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

var koreanString = "희망 데니의";

要处理表示 unicode 字符的十六进制字符串,请将十六进制字符串解析为数字,然后生成 unicode 字符串使用 String.fromCharCode()

var hex = "d76cb9dd0020b370b2c8c758";
var koreanString = "";
for (var i = 0; i < hex.length; i += 4) {
    koreanString += String.fromCharCode(parseInt(hex.substring(i, 4), 16));
}

编辑:您可以通过访问其length属性来获取任何字符串的长度:

var stringLength = koreanString.length;

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

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

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

怎么样

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

演示