web-dev-qa-db-ja.com

Unicode値に対してJavaScriptでAsc()およびChr()を呼び出す簡単な方法は何ですか?

私はJavascriptに精通していないので、文字のUNICODE値を返し、UNICODE値が与えられると、同等の文字列を返す関数を探しています。単純なものがあると確信していますが、私はそれを見ません。

例:

  • ASC( "A")= 65
  • CHR(65)= "A"
  • ASC( "ਔ")= 2580
  • CHR(2580)= "ਔ"
42
Noah

見て:

String.fromCharCode(64)

そして

String.charCodeAt(0)

最初の文字列で呼び出す必要がありますclass(literally String.fromCharCode...)「@」を返します(64)。 2番目は文字列で実行する必要がありますinstance(e.g.、"@@@".charCodeAt...)および最初の文字のUnicodeコードを返します(「0」は文字列内の位置です。文字列内の他の文字のコードは、別の数字に変更することで取得できます)。

スクリプトスニペット:

document.write("Unicode for character ਔ is: " + "ਔ".charCodeAt(0) + "<br />");
document.write("Character 2580 is " + String.fromCharCode(2580) + "<br />");

与える:

文字UniのUnicodeは2580 
文字2580はਔ
です。
68
paxdiablo

JavaScriptはUCS-2を内部的に使用します であるため、String.fromCharCode(codePoint)は補助的なUnicode文字では機能しません。たとえば、codePoint1195580x1D306'????'文字の場合)の場合。

非BMP Unicodeコードポイントに基づいて文字列を作成する場合は、 Punycode.js ’のユーティリティ関数を使用して、UCS-2文字列とUTF-16コードポイントを変換できます。

// `String.fromCharCode` replacement that doesn’t make you enter the surrogate halves separately
punycode.ucs2.encode([0x1d306]); // '????'
punycode.ucs2.encode([119558]); // '????'
punycode.ucs2.encode([97, 98, 99]); // 'abc'

文字列内のすべての文字のUnicodeコードポイントを取得する場合、UCS-2文字列をUTF-16コードポイントの配列に変換する必要があります(各サロゲートペアが単一のコードポイントを形成します)。これには Punycode.js のユーティリティ関数を使用できます。

punycode.ucs2.decode('abc'); // [97, 98, 99]
punycode.ucs2.decode('????'); // [119558]
5
Mathias Bynens

ここでアルファベット配列を生成する例:

const arr = [];
for(var i = 0; i< 20; i++) {
    arr.Push( String.fromCharCode('A'.charCodeAt(0) + i) )
}
1
user3479125