Какой простой способ вызвать Asc () и Chr () в JavaScript для значений Unicode? - PullRequest
41 голосов
/ 21 января 2009

Я не настолько знаком с Javascript и ищу функцию, которая возвращает значение UNICODE символа, а с учетом значения UNICODE возвращает строковый эквивалент. Я уверен, что есть что-то простое, но я не вижу этого.

Пример:

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

Ответы [ 3 ]

66 голосов
/ 21 января 2009

Посмотрите на:

String.fromCharCode(64)

и

String.charCodeAt(0)

Первый должен вызываться для класса String (буквально String.fromCharCode...) и возвращать "@" (для 64). Второй должен выполняться на экземпляре String instance (например, "@@@".charCodeAt...) и возвращает код Unicode первого символа («0» - это позиция в строке, вы можете получить коды для других символы в строке, изменив это на другое число).

Фрагмент скрипта:

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

дает:

Unicode for character ਔ is: 2580
Character 2580 is ਔ
4 голосов
/ 02 февраля 2012

Поскольку JavaScript использует UCS-2 для внутреннего использования , String.fromCharCode(codePoint) не будет работать для дополнительных символов Юникода. Например, если codePoint равно 119558 (0x1D306, для символа '?').

Если вы хотите создать строку на основе кодовой точки Unicode, отличной от BMP, вы можете использовать служебные функции 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]
1 голос
/ 11 октября 2016

Пример создания массива алфавита здесь:

const arr = [];
for(var i = 0; i< 20; i++) {
    arr.push( String.fromCharCode('A'.charCodeAt(0) + i) )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...