Unescape JavaScript中的转义字符串

时间:2015-03-26 22:27:56

标签: javascript unicode

我正在运行一个循环来显示特定Unicode转义序列的字符。

var es = '';

for (var i = 0; i <= 9999; i++) {
  if (i < 10) {
    es = '\\u000' + i;
  } else if (i < 100) {
    es = '\\u00' + i;
  } else {
    es = '\\u' + i;
  }
  console.log(es);
}

...但是,它不会显示字符,只显示序列。在JavaScript中是否存在转义转义序列以强制它显示字符?

3 个答案:

答案 0 :(得分:1)

为此,您需要使用String.fromCharCode()

var es = '';
for (var i = 0; i < 9999; ++i) {
  es = String.fromCharCode(i);
  // ...
}

\uNNNN语法仅适用于较大字符串常量内的常量值。

编辑 - 下面的重要评论指出,由于JavaScript字符串的UTF-16实现存在问题,.fromCharCode()在基本多语言平面之外的字符存在问题。为此,ES6(ES2015)具有String.fromCodePoint(),类似于处理处理16位范围之外的“星体”字符的功能。 More on that here以及评论中的链接。

答案 1 :(得分:0)

我遇到类似的问题,来自REST端点的JSON响应,这就解决了这个问题:

JSON.parse('"' + es + '"')

答案 2 :(得分:0)

对于那些在这个问题上绊倒的人(很可能是我未来的自己)希望“摆脱”以前逃脱的 Javascript special characters,这里有一个黑客的方法:

newString = JSON.stringify(string).slice(1,-1)

不过这似乎只对某些字符有效,例如 \t\n\r\f\b\\、等

为了更好地解释自己,在制表符的情况下,这会将制表符转换回文字/原始字符串,即 \t