javascript - 在 for 循环中生成一个 unicode 字符列表

标签 javascript escaping

我试图列出在 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/

最佳答案

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

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

    character = String.fromCharCode(i);

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

关于javascript - 在 for 循环中生成一个 unicode 字符列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746278/

相关文章:

javascript window.open 函数

php - jQuery 转义空格

hibernate - Grails/GORM/Hibernate 应用程序不是 SQL 转义输入数据

python - 如何在 Flask-SocketIO 中转义 HTML 字符?

javascript - 用数字声明变量不起作用

javascript - Youtube API - onclick 播放视频 - 跨浏览器

javascript - 在空格键上 react 选择 v2 选择第一个值

f# - 如何从序列的迭代中提前返回?

php - PHP 转义字符串中的 JS(用于函数)

javascript - 在对象数组中搜索条目匹配变量,并检查它是否与其他字段匹配