在for循环中生成unicode字符列表

时间:2012-10-05 12:28:55

标签: 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'));
}

我尝试过:

character = "\u{"+i+"}"

cha = ['\\u'];
cha.push(i);
cha.join('');

......我的想法已经用完了

一个例子:

jsfiddle.net/Dn4Vv/

4 个答案:

答案 0 :(得分:6)

最大的问题是在解析代码时解释\uXXXX;就像你不能写'"' + '"'""一样(因为"是代码中的实际双引号,而'"'是一个字符串包含 "),您不能将'\\u' + 'XXXX'写成与'\uXXXX'相同的意思。

正如Brad Christie在上面的评论中所说,您应该使用the function String.fromCharCode将整数转换为您需要的字符:

    character = String.fromCharCode(i);

第二个问题 - 这是学术性的,由于上述原因,但我想我应该提一下 - 是\uXXXX符号期望字符代码以十六进制表示法给出,并将零填充到正好四个十六进制数字,而您使用十进制表示法,并且没有零填充。例如,您正在编写\u65,但A的Unicode转义语法实际上是\u0041

答案 1 :(得分:0)

试试这个:String.fromCharCode(i);

答案 2 :(得分:0)

character = String.fromCharCode(i); // works for me

答案 3 :(得分:0)

尝试这样的事情:

<script language=Javascript>
charCode=2665;
uc='"\\u' + charCode +'"';
document.write('<a title="' + charCode + '">' + eval(uc) + '</a>');
</script>