Яро*_*лин 5 javascript escaping
我试图列出使用for循环中的计数器作为unicode字符的数量.这个的目的,......让我们说我喜欢这样做.当然,经验丰富的javascript用户可以告诉我这里有什么问题.
要在javascript中使用unicode字符,可以按原样键入,也可以使用以下转义序列:\u8211.当我尝试将数字部分与逃脱的你结合起来时,我的问题出现了.我得到的错误是"坏转义字符",这意味着i变量中的数字不会与我希望的\ u结合.
for (var i=65; i< 90; i++ ) {
anchor = document.createElement('a'),
img = document.createElement('img'),
character = "\\u"+i;
img.setAttribute('alt', character);
img.setAttribute('src', '');
anchor.appendChild(document.createTextNode(i +": "));
anchor.appendChild(img);
anchor.setAttribute('title', character);
body.appendChild(anchor);
body.appendChild(document.createElement('br'));
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
character = "\u{"+i+"}"
cha = ['\\u'];
cha.push(i);
cha.join('');
Run Code Online (Sandbox Code Playgroud)
......而且我已经没想完了
一个例子:
最大的问题是\uXXXX在解析代码时解释; 正如你不能写'"' + '"'的意思相同""(因为"在代码中是一个实际的双引号,而是'"'一个包含 的字符串"),你不能写'\\u' + 'XXXX'为意思相同'\uXXXX'.
正如Brad Christie在上面的评论中所说,您应该使用该函数String.fromCharCode将整数转换为您需要的字符:
character = String.fromCharCode(i);
Run Code Online (Sandbox Code Playgroud)
第二个问题 - 这是学术性的,由于上述原因,但我认为我应该提到它 - 是\uXXXX符号要求字符代码以十六进制表示法给出,并且填充为正好四个十六进制数字,而你是以十进制表示法给出它,没有零填充.例如,您正在编写\u65,但A实际上是Unicode-escape语法\u0041.