我有以下 unicode 序列:
d76cb9dd0020b370b2c8c758
我随机尝试了非英语字符(在这个实验中,我尝试了韩语)作为上述 unicode 行的原始内容:
희망 데니의
如何将上述 unicode 序列解码为原始形式?
最佳答案
作为 JavaScript 字符串文字,使用 \u
转义十六进制代码:
var koreanString = "\ud76c\ub9dd\u0020\ub370\ub2c8\uc758";
或者只是在字符串中输入韩文字符:
var koreanString = "희망 데니의";
要处理表示 unicode 字符的十六进制字符串,请将十六进制字符串解析为数字并使用 String.fromCharCode()
构建 unicode 字符串:
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
。没有“english”字符串。您有一个表示十六进制数字的字符串,十六进制数字由拉丁字符集中的字符组成,但它们不属于任何口头语言。它们只是数字。当然,您可以使用 length
属性获取十六进制字符串的长度,但我不确定您为什么要这样做。使用数字数组而不是字符串会更直接:
var charCodes = [0xd76c, 0xb9dd, 0x0020, 0xb370, 0xb2c8, 0xc758];
var koreanString = String.fromCharCode.apply(null, charCodes);
这样,charCodes.length
将与 koreanString.length
相同。
关于javascript - 在 JavaScript 中将 Unicode 解码为字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14449245/