Литералы Javascript для символов выше U+FFFF

Мой исходный код javsacript строго ascii, и я хочу представить символ гнева в строковом литерале. Это возможно в JavaScript?

1 ответ

Решение

Строки JavaScript по сути являются UTF-16, поэтому вы можете написать суррогатную пару, используя экранирование Unicode: "\uD83D\uDCA2" (это то, что показано на этой странице для исходного кода Java, который также работает в JavaScript).

Начиная с ES2015 (ES6), вы также можете записать его как \u{1F4A2} вместо того, чтобы разрабатывать суррогатные пары ( спец.).

Пример:

С помощью \uD83D\uDCA2:

document.body.innerHTML =
  "(Of course, this only works if the font has that character.)" +
  "<br>As \\uD83D\\uDCA2: \uD83D\uDCA2";

С помощью \u{1F4A2} (если ваш браузер поддерживает новую функцию ES2015):

document.body.innerHTML =
  "(Of course, this only works if the font has that character.)" +
  "<br>As \\u{1F4A2}: \u{1F4A2}";


Вот пример использования U + 1D44E (\uD835\uDC4E, \u{1D44E}), стилизованный в математике, который показан здесь на SO для меня на Linux (тогда как ваш :anger: смайлики нет, но делает, если я использую Windows 8.1):

С помощью \uD835\uDC4E:

document.body.innerHTML =
  "(Of course, this only works if your browser has that symbol.)" +
  "<br>As \\uD835\\uDC4E: \uD835\uDC4E";

С помощью \u{1D44E} (если ваш браузер поддерживает новую функцию ES2015):

document.body.innerHTML =
  "(Of course, this only works if your browser has that symbol.)" +
  "<br>As \\u{1D44E}: \u{1D44E}";

Другие вопросы по тегам