Как передать странные символы в javaScript? [Дубликат]

Для имен файлов:

  string cleanFileName = String.Join ("", fileName.Split (Path.GetInvalidFileNameChars ()));   

Для полных путей:

  string cleanPath = String.Join ("", path.Split (Path.GetInvalidPathChars ()));   
91
задан Greg Hewgill 26 October 2012 в 20:24
поделиться

3 ответа

Я предполагаю, что вы действительно хотите, чтобы Omega была строкой , содержащей прописную омегу в верхнем регистре? В этом случае вы можете написать:

var Omega = '\u03A9';

(Потому что & Omega; - символ Юникода с кодовым номером U + 03A9 , то есть 03A9 - 937, кроме как записано в виде четырех шестнадцатеричных цифр.)

138
ответ дан ruakh 15 August 2018 в 14:29
поделиться

Ответ правильный, но вам не нужно объявлять переменную. Строка может содержать ваш символ:

"This string contains omega, that looks like this: \u03A9"

К сожалению, эти коды в ASCII необходимы для отображения UTF-8, но я все еще жду (с тех пор слишком много лет ...) в тот день, когда UTF- 8 будет таким же, как ASCII, и ASCII будет просто воспоминанием о прошлом.

3
ответ дан fresko 15 August 2018 в 14:29
поделиться
  • 1
    Emoji делает эти коды еще сложнее набрать! \u{1F641} = – User that is not a user 14 October 2017 в 00:44

Несмотря на то, что @ruakh дал хороший ответ, я добавлю несколько альтернатив для полноты:

Вы могли бы использовать даже var Omega = 'Ω' в JavaScript, но только если ваш код JavaScript:

  • внутри атрибута события, как в onclick="var Omega = '&#937'; alert(Omega)" или
  • в элементе script внутри документа XHTML (или XHTML + XML), который подается с типом содержимого XML.

В этих случаях код будет первым (до того, как он будет передан интерпретатору JavaScript) проанализирован парсером HTML, чтобы распознать символьные ссылки, такие как Ω. Ограничения делают это непрактичным подходом в большинстве случаев.

Вы также можете ввести символ Ω как таковой, как в var Omega = 'Ω', но тогда кодировка символов должна позволять это, кодирование должно быть должным образом объявлено, и вам нужно программное обеспечение, позволяющее вводить такие символы. Это чистое решение и вполне возможно, если вы используете кодировку UTF-8 для всего и готовы решать проблемы, созданные им. Исходный код будет читабельным, и, читая его, вы сразу увидите символ, а не код. С другой стороны, это может вызвать неожиданности, если другие люди начнут работать с вашим кодом.

Использование нотации \u, как и в var Omega = '\u03A9', работает независимо от кодировки символов, и практически практически универсальный. Однако он может использоваться как таковой только до U + FFFF, то есть до \uffff, но большинство персонажей, которые большинство людей когда-либо слышали, попадают в эту область. (Если вам нужны «более высокие» символы, вам нужно использовать суррогатные пары или один из двух подходов выше).

Вы также можете создать символ, используя метод String.fromCharCode(), передавая в качестве параметра Номер Юникода, в десятичном формате, как в var Omega = String.fromCharCode(937), или в шестнадцатеричном виде, как в var Omega = String.fromCharCode(0x3A9). Это работает до U + FFFF. Этот подход можно использовать, даже если у вас есть номер Unicode в переменной.

37
ответ дан Seanny123 15 August 2018 в 14:29
поделиться
  • 1
    Времена изменились сейчас, через 5 лет люди используют эти вещи, называемые «эможи». вне диапазона U+FFFF. JavaScript тоже есть, поэтому вы можете это сделать. var poop = '\u{1F4A9}'; – User that is not a user 14 October 2017 в 00:40
  • 2
    @Userthatisnotauser и , что должен быть принятым ответом! – Marten Koetsier 12 April 2018 в 10:19
  • 3
    Как вы можете вставить символ «open lock» '\ uD83D \ uDD13', используя один код, который является «0x1F512» в JavaScript? И зачем нам нужны два кода для вставки одного символа? – tarekahf 14 May 2018 в 17:34
  • 4
    @tarekahf Вот краткий урок Unicode. UTF-16 охватывает только Unicode U + 0000 до U + FFFF. Затем Unicode вырос, и суррогаты были изобретены, так что UTF-16 мог получить доступ к этим точкам. Но JavaScript может просто сделать это сейчас: var lock = '\u{1F512}' И вы получите это: – User that is not a user 17 July 2018 в 01:26
Другие вопросы по тегам:

Похожие вопросы: