javascript - 在 JavaScript 中将 Unicode 解码为字符

标签 javascript utf-8 utf-16

我有以下 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/

相关文章:

javascript - String.fromCodePoint/String#codePointAt 的意外行为 (Firefox/ES6)

javascript - Jquery:拆分/连接字符串 onKeyup 事件

javascript - 如何使用jquery关闭自动完成/建议框

java - 错误: unmappable character for encoding UTF8

c - C 字符串文字中的 UTF-8 转义序列

c++ - UTF-16BE 到 UTF-8 使用 Boost.Locale 产生垃圾

c# - 在 .Net 中使用大于 2 个字节的 unicode 字符

javascript - 在 JavaScript 中设置 DIV 宽度和高度

javascript - Angular JS - 具有自定义验证规则的字符串模式

php - 如何在 Ratchet (PHP, WebSocket) 中将编码文本设置为 UTF-8?