在javascript中连接utf字符串时出错

Error on concatenate utf strings in javascript

本文关键字:字符串 出错 utf 连接 javascript      更新时间:2023-09-26

我正在尝试连接字符串并打印其utf8字符。然而,由于某些原因,这似乎不是正确的语法。错误为:

 console.log("'u" + i);
            ^^^
 SyntaxError: Unexpected token ILLEGAL

用于生成的代码是

var _ = require('lodash');
_.times(2588, function(i){
    console.log("'u" + i);
});

您可以使用String.fromCharCode

例如String.fromCharCode(0x2588) == "'u2588"

SyntaxError是因为"''u"不是有效的unicode序列。

假设您想创建带有''u前缀的动态序列,您可以这样做:

//65 --> 0065
Number.prototype.pad = function(size) {
      var s = String(this);
      while (s.length < (size || 2)) {s = "0" + s;}
      return s;
    }
for (var i=6000;i<6005;i++) // for example...
{
 alert(unescape ('%u' + i.pad(4)))
}

结果:

怀
态
怂
怃
怄

http://jsbin.com/vogeqotoqa/edit?html,js,输出

这里有两个问题:

1) 当您连接字符串和表示utf序列的数字时,javascript试图将"''u"解析为unicode字符,如果您尝试console.log("'u0000"+0),结果将是�0

2) UTF 8序列必须包含4个十六进制字符,'u0不是有效的unicode序列,而'u0000是。unicode序列遵循以下正则表达式:'u[a-fA-F0-9]{4}

正确答案是Akisame的,使用console.log(String.fromCharCode(i));。另请参阅在for循环中生成unicode字符列表

var message="здравей";
var final=message.concat(" готин"," свят");
alert(final);