6

forループでカウンターをユニコード文字の数として使用してリストしようとしています。これの目的は、...ただ、私は楽しみのためにやっていると言いましょう。確かに、ベテランの 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);

2 番目の問題 — これは上記の理由からアカデミックなものですが、言及する必要があると思います —表記で\uXXXXは、文字コードが16 進数表記で与えられ、正確に 4 桁の 16 進数までゼロが埋め込まれていることを期待していることです。 10 進表記で、ゼロ パディングなしで指定します。たとえば、 と書いています\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 に答える