在JavaScript中如何转换Unicode?

9

我正在使用Google Maps API。请查看此JSON响应

HTML指令如下:

"html_instructions" : "Turn \u003cb\u003eleft\u003c/b\u003e onto \u003cb\u003eEnggårdsgade\u003c/b\u003e"

如何在JavaScript中转换unicode编码为\u003c, \u003e等字符?


"\u003cb" 在 JavaScript 中实际上代表着两个字符:\u003c< 的 Unicode 转义序列(参见 http://mathiasbynens.be/notes/javascript-escapes#unicode),第二个字符是 b - Mathias Bynens
4个回答

11

这些是 JavaScript 字符串中的 Unicode 字符转义序列。就 JavaScript 而言,它们表示相同的字符。

'\u003cb\u003eleft\u003c/b\u003e' == '<b>left</b>'; // true
所以,您根本不需要进行任何转换。

3
我希望使用JavaScript将字符串添加到一个div中,因此我需要使用<b>而不是\u003cb\u003e - dhrm
3
正如我刚告诉你的那样,它们是完全相同的字符串!试一下:document.body.innerHTML = '\u003cb\u003eleft\u003c/b\u003e';将产生与document.body.innerHTML = '<b>left</b>';完全相同的效果。 - Mathias Bynens

7

现代JavaScript提供了更简单的方法。

ES6 / ES2015在字符串原型上引入了normalize()方法,因此我们可以这样做:

var directions = "Turn \u003cb\u003eleft\u003c/b\u003e onto \u003cb\u003eEnggårdsgade\u003c/b\u003e";

directions.normalize();

//it will return : "Turn <b>left</b> onto <b>Enggårdsgade</b>"

请参考这篇文章:https://flaviocopes.com/javascript-unicode/。该文章涉及IT技术相关内容,介绍了JavaScript中Unicode的使用方法和细节,并对其进行了详细解释。

2
长时间搜索后的最佳答案 - Hisham
1
太棒了!它救了我的命。 - liuliang
这个答案是胡说八道。只需打开你的浏览器控制台,然后粘贴以下内容:"Turn \u003cb\u003eleft\u003c/b\u003e onto \u003cb\u003eEnggårdsgade\u003c/b\u003e"它将返回:'Turn <b>left</b> onto <b>Enggårdsgade</b>' - JohnFlux

5
您可以直接在JSON响应上使用JSON.parse,然后Unicode字符会自动转换为其HTML对应的字符(\ u003c将被转换为HTML中的<符号)。
JSON.parse(JSON.stringify({a : 'Turn \u003cb\u003eleft\u003c/b\u003e onto \u003cb\u003eEnggårdsgade\u003c/b\u003e'}));

JavaScript字符串不包括HTML实体,你是什么意思? - Bergi
抱歉造成困惑,我想说的是在HTML中,\u003c会被转换为<符号。 - Saket Patel
2
不,与HTML无关!请参考Mathias的回答。甚至有人可能认为它会在HTML中转换为<。-) - Bergi

-1

这个小函数可能会有所帮助

String.prototype.toUnicode = function(){
    var hex, i;
    var result = "";
    for (i=0; i<this.length; i++) {
        hex = this.charCodeAt(i).toString(16);
        result += ("\\u00"+hex).slice(-7);
    }

    return result;
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接