6

我试图在 for 循环中列出使用计数器作为 unicode 字符的编号。这样做的目的,......让我们说我这样做是为了好玩。当然,经验丰富的 javascript 用户将能够告诉我这里出了什么问题。

要在 javascript 中使用 unicode 字符,可以按原样输入,也可以使用转义序列,例如:\u8211. 当我尝试将数字部分与转义的 u 结合起来时,我的问题就出现了。我得到的错误类似于“错误的转义字符”,这意味着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

4 回答 4

8

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

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

    character = String.fromCharCode(i);

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

于 2012-10-05T12:36:29.677 回答
0

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

于 2012-10-05T12:31:15.143 回答
0
character = String.fromCharCode(i); // works for me
于 2012-10-05T12:35:44.110 回答
0

尝试这样的事情:

<script language=Javascript>
charCode=2665;
uc='"\\u' + charCode +'"';
document.write('<a title="' + charCode + '">' + eval(uc) + '</a>');
</script>
于 2014-01-05T16:58:11.953 回答