在javascript中连接utf字符串时出错
我正在尝试连接字符串并打印其utf8字符。然而,出于某种原因,这似乎不是正确的语法。错误是:在javascript中连接utf字符串时出错,javascript,utf-8,Javascript,Utf 8,我正在尝试连接字符串并打印其utf8字符。然而,出于某种原因,这似乎不是正确的语法。错误是: console.log("\u" + i); ^^^ SyntaxError: Unexpected token ILLEGAL 用于生成的代码是 var _ = require('lodash'); _.times(2588, function(i){ console.log("\u" + i); }); 这里有两个问题: 1) 当您连接字符串和表示utf序列
console.log("\u" + i);
^^^
SyntaxError: Unexpected token ILLEGAL
用于生成的代码是
var _ = require('lodash');
_.times(2588, function(i){
console.log("\u" + i);
});
这里有两个问题: 1) 当您连接字符串和表示utf序列的数字时,javascript尝试将“\u”解析为unicode字符,如果您尝试
console.log(“\u0000”+0)
,结果将是�0
2) UTF 8序列必须包含4个十六进制字符,\u0
不是有效的unicode序列,\u0000
是有效的unicode序列。Unicode序列遵循以下正则表达式:\u[a-fA-F0-9]{4}
正确答案是相同的,使用
console.log(String.fromCharCode(i))代码>。另请参见您可以使用String.fromCharCode
例如String.fromCharCode(0x2588)=“\u2588”
语法错误是因为“\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)))
}
没有解释SyntaxError thoughtry console.log(“\u0”)和console.log(\u0000”),您将看到第一个给出语法错误,而第二个没有\u始终是unicode字符的前缀。Firebug给了我一个更详细的错误:“SyntaxError:格式错误的Unicode字符转义序列”是的,但是OP没有记录“\u0”
,他们记录的是“\u”+0
,在这种情况下它们是不等价的。你是对的,我回答得太匆忙了。我要编辑答案或String.fromCharCode(parseInt(i,16))
将i
转换为他想要动态构建的十六进制。这是如何回答这个问题的?@RoyiNamir实际上,这就是答案。无法将“\u”与另一个字符串连接起来,因为“\u”不是有效的unicode序列<代码>字符串。fromCharCode
接受数字而不是字符串作为参数。只要看一下文档就可以了。毫无疑问,他应该避开\\u
,但我仍然认为他想从'\\u'+'0065'
中取出字符,尽管unescape已被弃用
怀
态
怂
怃
怄
var message="здравей";
var final=message.concat(" готин"," свят");
alert(final);