..
..
..
..
..
..HTML UTF-8 Справочное руководство
w3big.com
Latest web development tutorials
Предыдущая: HTML ISO-8859-1 Справочное руководство
Далее: HTML ссылка символ сущность по эксплуатации
Консорциум Unicode (Консорциум Unicode)
Консорциум Unicode (Консорциум Unicode) разработал стандарт Unicode (стандарт Unicode). Их цель состоит в том, чтобы использовать стандартный формат Unicode преобразования (т.е. UTF, расшифровывается как Unicode Transformation Format), чтобы заменить существующие наборы символов.
Стандарт Unicode является успешной инициативой, в HTML, XML, Java, JavaScript, электронная почта, ASP, PHP достигнуты.
стандарт Unicode также многие операционные системы и все современные браузеры поддержки.
Unicode альянс с ведущими организациями по разработке стандартов, которые имеют ISO, W3C и ECMA.
Набор символов Unicode
Unicode, могут быть реализованы с помощью различных наборов символов. Наиболее часто используемый кодировка UTF-8 и UTF-16:
| 字符集 | 描述 |
|---|---|
| UTF-8 | UTF8 中的字符可以是 1 到 4 字节长。UTF-8 可以代表 Unicode 标准中的任何字符。UTF-8 向后兼容 ASCII。UTF-8 是电子邮件和网页的首选编码。 |
| UTF-16 | 16 位 Unicode 转换格式是一种可变长度的 Unicode 字符编码,能够编码整个 Unicode 指令表。UTF-16 主要用于操作系统和环境,如 Microsoft Windows、Java 和 .NET。 |
Совет: Unicode первые 128 символов (ASCII-однозначное соответствие) использовать значение ASCII того же двоичного октета кодируется таким образом, что действительный текст ASCII UTF-8 кодировке также проводит эффективным.
Совет: Все HTML 4 процессоры поддерживают UTF-8, все HTML 5 и процессоры XML поддержка UTF-8 и UTF-16!
стандарты HTML5: Unicode UTF-8
Поскольку набор символов размер ISO-8859 ограничена и не совместимы в многоязычной среде, консорциум Unicode разработал стандарт Unicode.
стандартные обложки Unicode (почти) все символы, знаки и символы.
Unicode позволяет обработку, хранение и транспортировку текста, а также независимый от платформы язык.
HTML-5 в кодировке символов по умолчанию является UTF-8.
Вот некоторая поддержка HTML5 набор UTF-8 символов:
| 字符集 | 十进制 | 十六进制 |
|---|---|---|
| C0 控制与基本的 Latin(C0 Controls and Basic Latin) | 0-127 | 0000-007F |
| C1 控制与 Latin-1 的补充(C1 Controls and Latin-1 Supplement) | 128-255 | 0080-00FF |
| Latin 扩展 A(Latin Extended-A) | 256-383 | 0100-017F |
| Latin 扩展 B(Latin Extended-B) | 384-591 | 0180-024F |
Если HTML5 страница использует UTF-8 символов отличается от, вам нужно указать в теге <META> следующим образом:
примеров
<meta charset=»ISO-8859-1″>
Предыдущая: HTML ISO-8859-1 Справочное руководство
Далее: HTML ссылка символ сущность по эксплуатации
w3big.
com |
HTML курс |
Web курс |
Web Tutorial
| ||
Учебное пособие по регулярным выражениям. Символы и свойства Unicode
Unicode — это набор символов, предназначенный для определения всех символов и глифов всех человеческих языков, живых и мертвых. Поскольку требуется все больше и больше программного обеспечения для поддержки нескольких языков или даже просто любого языка , Unicode в последние годы сильно набирает популярность. Использование разных наборов символов для разных языков просто слишком громоздко для программистов и пользователей.
К сожалению, Unicode предъявляет свои требования и подводные камни, когда дело доходит до регулярных выражений.
Из разновидностей регулярных выражений, обсуждаемых в этом руководстве, Java, XML и .NET используют механизмы регулярных выражений на основе Unicode. Perl поддерживает Unicode, начиная с версии 5.6. PCRE может быть дополнительно скомпилирован с поддержкой Unicode. Обратите внимание, что PCRE гораздо менее гибок в отношении токенов \p, несмотря на его название «Perl-совместимый». Предварительные функции PHP, основанные на PCRE, поддерживают Unicode, если к регулярному выражению добавляется параметр /u. Ruby поддерживает escape-последовательности и свойства Unicode в регулярных выражениях, начиная с версии 1.9.. XRegExp обеспечивает поддержку свойств Unicode для JavaScript.
Механизм регулярных выражений RegexBuddy полностью основан на Unicode, начиная с версии 2.0.0. RegexBuddy 1.x.x вообще не поддерживал Unicode. PowerGREP использует тот же механизм регулярных выражений Unicode, начиная с версии 3.0.0. Более ранние версии преобразовывали файлы Unicode в ANSI перед сборкой с помощью 8-битного (т.
..$ соответствует à.
Кодовая точка Unicode U+0300 (ударение) представляет собой , объединяющий знак . За любой кодовой точкой, не являющейся объединяющей меткой, может следовать любое количество объединяющих меток. Эта последовательность, как и U+0061 U+0300 выше, отображается на экране как одна графема .
К сожалению, à также можно закодировать с помощью одной кодовой точки Unicode U+00E0 (a с серьезным ударением). Причина этой двойственности заключается в том, что многие исторические наборы символов кодируют «а с серьезным ударением» как один символ. Разработчики Unicode подумали, что было бы полезно иметь сопоставление один к одному с популярными устаревшими наборами символов в дополнение к способу Unicode для разделения знаков и базовых букв (что делает возможными произвольные комбинации, не поддерживаемые устаревшими наборами символов).
Как сопоставить одиночную графему Unicode
Сопоставить одиночную графему, закодированную как одну кодовую точку или как несколько кодовых точек с использованием комбинированных меток, легко в Perl, PCRE, PHP, Boost, Ruby 2.
0, Java 9 , и приложения Just Great Software: просто используйте \X. Вы можете рассматривать \X как версию точки в Unicode. Однако есть одно отличие: \X всегда соответствует символам разрыва строки, тогда как точка не соответствует символам разрыва строки, если только вы не включите режим сопоставления точки с новой строкой.
В .NET, Java 8 и более ранних версиях и Ruby 1.9 вы можете использовать \P{M}\p{M}*+ или (?>\P{M}\p{M}*) в качестве достаточно близкой замены . Чтобы сопоставить любое количество графем, используйте (?>\P{M}\p{M}*)+ вместо \X+.
Сопоставление определенной кодовой точки
Чтобы сопоставить определенную кодовую точку Unicode, используйте \uFFFF, где FFFF — шестнадцатеричное число кодовой точки, которую вы хотите сопоставить. Вы всегда должны указывать 4 шестнадцатеричных цифры. \u00E0 соответствует à, но только при кодировании одной кодовой точкой U+00E0.
Perl, PCRE, Boost и std::regex не поддерживают синтаксис \uFFFF. Вместо этого они используют \x{FFFF}.
Вы можете опустить ведущие нули в шестнадцатеричном числе между фигурными скобками. Поскольку \x сам по себе не является допустимым токеном регулярного выражения, \x{1234} никогда нельзя спутать с совпадением \x 1234 раза. Он всегда соответствует кодовой точке Unicode U+1234. \x{1234}{5678} попытается сопоставить кодовую точку U+1234 ровно 5678 раз.
В Java маркер регулярного выражения \uFFFF соответствует только указанной кодовой точке, даже если вы включили каноническую эквивалентность. Однако тот же синтаксис \uFFFF также используется для вставки символов Unicode в литеральные строки в исходном коде Java. Pattern.compile(«\u00E0») будет соответствовать кодировке à как с одной кодовой точкой, так и с двойной кодовой точкой, а Pattern.compile(«\\u00E0») соответствует только версии с одной кодовой точкой. Помните, что при написании регулярного выражения в виде строкового литерала Java необходимо экранировать обратную косую черту. Первый код Java компилирует регулярное выражение à, а второй компилирует \u00E0.
В зависимости от того, что вы делаете, разница может быть значительной.
JavaScript, который не поддерживает Unicode через свой класс RegExp, поддерживает \uFFFF для сопоставления одной кодовой точки Unicode как часть синтаксиса строки.
Схема XML и XPath не имеют маркера регулярного выражения для сопоставления кодовых точек Unicode. Однако вы можете легко использовать объекты XML, такие как для вставки литеральных кодовых точек в ваше регулярное выражение.
Категории Unicode
Помимо усложнений, Unicode также предоставляет новые возможности. Во-первых, каждый символ Unicode принадлежит к определенной категории. Вы можете сопоставить одиночный символ, принадлежащий к категории «буква», с помощью \p{L}. Вы можете сопоставить один символ , а не , относящийся к этой категории с \P{L}.
Опять же, «символ» на самом деле означает «кодовую точку Unicode». \p{L} соответствует одной кодовой точке в категории «буква». Если ваша входная строка имеет кодировку à U+0061 U+0300, она соответствует a без акцента.
Если ввод à закодирован как U+00E0, он соответствует à с акцентом. Причина в том, что обе кодовые точки U+0061 (а) и U+00E0 (а) относятся к категории «буква», а U+0300 — к категории «знак».
Теперь вы должны понять, почему \P{M}\p{M}*+ является эквивалентом \X. \P{M} соответствует кодовой точке, которая не является объединяющей меткой, а \p{M}*+ соответствует нулю или более кодовым точкам, которые являются объединяющими метками. Чтобы сопоставить букву, включая любые диакритические знаки, используйте \p{L}\p{M}*+. Это последнее регулярное выражение всегда будет соответствовать à, независимо от того, как оно закодировано. Притяжательный квантификатор гарантирует, что поиск с возвратом не приведет к тому, что \P{M}\p{M}*+ будет соответствовать не-метке без следующих за ней комбинированных меток, чего \X никогда бы не сделал.
PCRE, PHP и .NET чувствительны к регистру, когда проверяют часть между фигурными скобками токена \p. \p{Zs} будет соответствовать любому символу пробела, а \p{zs} выдаст ошибку.
Все другие механизмы регулярных выражений, описанные в этом руководстве, будут соответствовать пробелу в обоих случаях, игнорируя регистр категории между фигурными скобками. Тем не менее, я рекомендую вам использовать ту же комбинацию прописных и строчных букв, что и я в списке свойств ниже. Это заставит ваши регулярные выражения работать со всеми механизмами регулярных выражений Unicode.
В дополнение к стандартной нотации, \p{L}, Java, Perl, PCRE, JGsoft Engine и XRegExp 3 позволяют использовать сокращение \pL. Сокращение работает только с однобуквенными свойствами Unicode. \pLl — это , а не эквивалент \p{Ll}. Это эквивалент \p{L}l, который соответствует Al или àl или любой букве Unicode, за которой следует литерал l.
Perl, XRegExp и движок JGsoft также поддерживают длинную запись \p{Letter}. Вы можете найти полный список всех свойств Unicode ниже. Вы можете опустить символы подчеркивания или вместо них использовать дефисы или пробелы.
- \p{L} или \p{Letter}: любая буква любого языка.

- \p{Ll} или \p{Lowercase_Letter}: строчная буква, имеющая вариант в верхнем регистре.
- \p{Lu} или \p{Uppercase_Letter}: прописная буква, у которой есть вариант строчной.
- \p{Lt} или \p{Titlecase_Letter}: буква, которая появляется в начале слова, когда только первая буква слова заглавная.
- \p{L&} или \p{Cased_Letter}: буква, которая существует в строчных и прописных вариантах (комбинация Ll, Lu и Lt).
- \p{Lm} или \p{Modifier_Letter}: специальный символ, который используется как буква.
- \p{Lo} или \p{Other_Letter}: буква или идеограмма, не имеющая строчных и прописных вариантов.
- \p{M} или \p{Mark}: символ, предназначенный для комбинирования с другим символом (например, акценты, умляуты, закрывающие прямоугольники и т. д.).
- \p{Mn} или \p{Non_Spacing_Mark}: символ, предназначенный для объединения с другим символом, не занимая лишнего места (например, акценты, умлауты и т. д.).
- \p{Mc} или \p{Spacing_Combining_Mark}: символ, предназначенный для объединения с другим символом, занимающим дополнительное место (знаки гласных во многих восточных языках).

- \p{Me} или \p{Enclosing_Mark}: символ, заключающий в себе символ, с которым он сочетается (круг, квадрат, колпачок и т. д.).
- \p{Z} или \p{Separator}: любой пробел или невидимый разделитель.
- \p{Zs} или \p{Space_Separator}: символ пробела, который невидим, но занимает место.
- \p{Zl} или \p{Line_Separator}: символ-разделитель строк U+2028.
- \p{Zp} или \p{Paragraph_Separator}: символ-разделитель абзаца U+2029.
- \p{S} или \p{Symbol}: математические символы, знаки валюты, дингбаты, символы для рисования прямоугольников и т. д.
- \p{Sm} или \p{Math_Symbol}: любой математический символ.
- \p{Sc} или \p{Currency_Symbol}: любой знак валюты.
- \p{Sk} или \p{Modifier_Symbol}: объединяющий символ (отметка) как отдельный полный символ.
- \p{So} или \p{Other_Symbol}: различные символы, не являющиеся математическими символами, знаками валюты или комбинациями символов.
- \p{N} или \p{Число}: любой числовой символ в любом сценарии.

- \p{Nd} или \p{Decimal_Digit_Number}: цифра от нуля до девяти в любом алфавите, кроме идеографического.
- \p{Nl} или \p{Letter_Number}: число, похожее на букву, например, римская цифра.
- \p{No} или \p{Other_Number}: надстрочная или подстрочная цифра или число, не являющееся цифрой 0–9(исключая числа из идеографического письма).
- \p{P} или \p{Punctuation}: любой знак пунктуации.
- \p{Pd} или \p{Dash_Punctuation}: любой вид дефиса или тире.
- \p{Ps} или \p{Open_Punctuation}: любая открывающая скобка.
- \p{Pe} или \p{Close_Punctuation}: любая закрывающая скобка.
- \p{Pi} или \p{Initial_Punctuation}: любая открывающая кавычка.
- \p{Pf} или \p{Final_Punctuation}: любая закрывающая кавычка.
- \p{Pc} или \p{Connector_Punctuation}: знак препинания, например, символ подчеркивания, соединяющий слова.
- \p{Po} или \p{Other_Punctuation}: любой знак пунктуации, кроме тире, квадратных скобок, кавычек или соединителей.

- \p{C} или \p{Other}: невидимые управляющие символы и неиспользуемые кодовые точки.
- \p{Cc} или \p{Control}: управляющий символ ASCII или Latin-1: 0x00–0x1F и 0x7F–0x9F.
- \p{Cf} или \p{Format}: невидимый индикатор форматирования.
- \p{Co} или \p{Private_Use}: любая кодовая точка, зарезервированная для частного использования.
- \p{Cs} или \p{Surrogate}: половина суррогатной пары в кодировке UTF-16.
- \p{Cn} или \p{Unassigned}: любая кодовая точка, которой не назначен ни один символ.
Скрипты Unicode
Стандарт Unicode помещает каждую назначенную кодовую точку (символ) в один скрипт. Сценарий — это группа кодовых точек, используемых определенной системой письма человека. Некоторые сценарии, такие как тайский, соответствуют одному человеческому языку. Другие сценарии, такие как латиница, охватывают несколько языков.
Некоторые языки состоят из нескольких алфавитов. Японского письма Unicode не существует.
Вместо этого Unicode предлагает хирагану, катакану, хань и латиницу, из которых обычно состоят японские документы.
Специальный сценарий — это Общий сценарий. Этот сценарий содержит всевозможные символы, которые являются общими для широкого круга сценариев. Он включает в себя всевозможные знаки препинания, пробелы и прочие символы.
Все назначенные кодовые точки Unicode (соответствующие \P{Cn}) являются частью ровно одного сценария Unicode. Все неназначенные кодовые точки Unicode (соответствующие \p{Cn}) вообще не являются частью какого-либо сценария Unicode.
Движок JGsoft, Perl, PCRE, PHP, Ruby 1.9, Delphi и XRegExp могут сопоставлять сценарии Unicode. Вот список:
- \p{Общий}
- \p{Арабский}
- \p{Армянский}
- \p{Бенгальский}
- \p{Бопомофо}
- 9 \p{024} p{Buhid}
- \p{Canadian_Aboriginal}
- \p{Cherokee}
- \p{Cyrillic}
- \p{Devanagari}
- \p{Ethiopic}
- \p{G {греческое}
- \p{Гуджарати}
- \p{Гурмукхи}
- \p{Хань}
- \p{Хангыль}
- \p{Хануно}
- \p{Иврит} \p{Ирагана}
- }
- \p{Унаследованный}
- \p{Каннада}
- \p{Катакана}
- \p{Кхмерский}
- \p{Лаосский}
- \p{Латинский}
- 902Limbu \p{Малайялам}
- \p{Монгольский}
- \p{Мьянма}
- \p{Огам}
- \p{Ория}
- \p{Рунический}
- \p{сингальский}
- \p{сирийский}
- \p{тагальский}
- \p{тагбанва}
- \p{тайле}
- \p{тамильский} 9001u9gu
- \p{Thaana}
- \p{Thai}
- \p{Tibetan}
- \p{Yi}
Perl и версия JGsoft позволяют использовать \p{IsLatin} вместо \p{Latin }.
Синтаксис «Is» полезен для различения скриптов и блоков, как описано в следующем разделе. PCRE, PHP и XRegExp не поддерживают префикс «Is».
В Java 7 добавлена поддержка сценариев Unicode. В отличие от других разновидностей, для Java 7 требуется префикс «Is».
Блоки Unicode
Стандарт Unicode делит карту символов Unicode на разные блоки или диапазоны кодовых точек. Каждый блок используется для определения символов определенного шрифта, такого как «тибетский», или принадлежащих к определенной группе, такой как «Шаблоны Брайля». Большинство блоков содержат неназначенные кодовые точки, зарезервированные для будущего расширения стандарта Unicode.
Обратите внимание, что блоки Unicode не на 100% соответствуют сценариям. Существенное различие между блоками и сценариями заключается в том, что блок представляет собой единый непрерывный диапазон кодовых точек, как указано ниже. Сценарии состоят из символов, взятых со всей карты символов Unicode. Блоки могут включать неназначенные кодовые точки (т.
е. кодовые точки, соответствующие \p{Cn}). Сценарии никогда не включают неназначенные кодовые точки. Как правило, если вы не уверены, использовать ли сценарий Unicode или блок Unicode, используйте сценарий.
Например, блок Валюта не включает символы доллара и иены. Вместо этого они находятся в блоках Basic_Latin и Latin-1_Supplement, хотя оба являются символами валюты, а символ иены не является латинским символом. Это связано с историческими причинами, поскольку стандарт ASCII включает знак доллара, а стандарт ISO-8859 включает знак иены. Вы не должны слепо использовать какие-либо из перечисленных ниже блоков на основе их названий. Вместо этого посмотрите на диапазоны символов, которым они действительно соответствуют. В этом может помочь такой инструмент, как RegexBuddy. Свойство Unicode \p{Sc} или \p{Currency_Symbol} будет лучшим выбором, чем блок Unicode \p{InCurrency_Symbols} при попытке найти все символы валюты.
- \p{InLatin_Latin}: U+0000–U+007F
- \p{InLatin-1_Supplement}: U+0080–U+00FF
- \p{InLatin_Extended-A}: U+0100–U+017F
- \p{InLatin_Extended-B}: U+0180–U+024F
- \p{InIPA_Extensions}: U+0250–U+02AF
- \p{InSpacing_Modifier_Letters}: U+02B0–U+02FF
- 9 p{InCombining_Diacritical_Marks}: U+0300–U+036F
- \p{InGreek_and_Coptic}: U+0370–U+03FF
- \p{InCyrillic}: U+0400–U+04FF
- \p{InCyrillic_Supplementary}: U + 0500–U + 052F
- \p{на армянском}: U+0530–U+058F
- \p{на иврите}: U+0590–U+05FF
- \p{на арабском}: U+0600–U+06FF
- \p{ InSyriac}: U+0700–U+074F
- \p{InThaana}: U+0780–U+07BF
- \p{InDevanagari}: U+0900–U+097F
- \p{InBengali}: U+ 0980–U+09FF
- \p{ИнГурмухи}: U+0A00–U+0A7F
- \p{ИнГуджарати}: U+0A80–U+0AFF
- \p{ИнОрия}: U+0B00–U+0B7F
- \p{InTamil}: U+0B80–U+0BFF
- \p{InTelugu}: U+0C00–U+0C7F
- \p{InKannada}: U+0C80–U+0CFF
- \p{InMalayalam}: U+0D00–U+0D7F
- \p{InSinhala}: U+0D80–U+0DFF
- \p{ Тайский}: U+0E00–U+0E7F
- \p{InLao}: U+0E80–U+0EFF
- \p{InTibetan}: U+0F00–U+0FFF
- \p{InLao}: U+ 1000–U+109F
- \p{InGeorgian}: U+10A0–U+10FF
- \p{InHangul_Jamo}: U+1100–U+11FF
- \p{InEthiopic}: U+1200–U+137F
- \p{InCherokee}: U+13A0–U+13FF
- \p{InUnified_Canadian_Aboriginal_Syllabics}: U+1400–U+167F
- \p{InOgham}: U+1680–U+169F
- \p{InRunic}: U+16A0–U+16FF
- \p{InTagalog}: U+1700–U+171F
- \p{ InHanunoo}: U+1720–U+173F
- \p{InBuhid}: U+1740–U+175F
- \p{InTagbanwa}: U+1760–U+177F
- \p{InKhmer}: U+ 1780–U+17FF
- \p{InMongolian}: U+1800–U+18AF
- \p{InLimbu}: U+1900–U+194F
- \p{InTai_Le}: U+1950–U+197F
- \p{InKhmer_Symbols}: U+19E0–U+19FF
- \p{InPhonetic_Extensions}: U+1D00–U+1D7F
- \p{InLatin_Extended_Additional}: U+1E00–U+1EFF
- \p{InGreek_Extended}: U+1F00–U+1FFF
- \p{InGeneral_Punctuation}: U+2000–U+206F
- \p{ InSuperscripts_and_Subscripts}: U+2070–U+209F
- \p{InCurrency_Symbols}: U+20A0–U+20CF
- \p{InCombining_Diacritical_Marks_for_Symbols}: U+20D0–U+20FF \InCurrency_Symbols 9001like 2100–U+214F
- \p{InNumber_Forms}: U+2150–U+218F
- \p{InArrows}: U+2190–U+21FF
- \p{InMathematical_Operators}: U+2200–U+22FF
- \p{InMiscellaneous_Technical}: U+2300–U+23FF
- \p{InControl_Pictures}: U+2400–U+243F
- \p{InOptical_Char }: U+2440–U+245F
- \p{InEnclosed_Alphanumerics}: U+2460–U+24FF
- \p{InBox_Drawing}: U+2500–U+257F
- \p{InBlock_Elements}: U+2580 –U+259F
- \p{InGeometric_Shapes}: U+25A0–U+25FF
- \p{InMiscellaneous_Symbols}: U+2600–U+26FF
- \p{InDingbats}: U+2700–U+27BF
- \p{InMiscellaneous_Mathematical_Symbols-A}: U+27C0–U+27EF
- \p{InSupplemental_Arrows-A}: U+27F0–U+27FF
- \ p{InBraille_Patterns}: U+2800–U+28FF
- \p{InSupplemental_Arrows-B}: U+2900–U+297F
- \p{InMiscellaneous_Mathematical_Symbols-B}: U+2980–U+29FF
- \p {InSupplemental_Mathematical_Operators}: U+2A00–U+2AFF
- \p{InMiscellaneous_Symbols_and_Arrows}: U+2B00–U+2BFF
- \p{InCJK_Radicals_Supplement}: U+2E80–U+2EFF
- \p{InKangxi_Radicals}: U+2F00–U+2FDF
- \p{InIdeographic_Description_Characters}: U+2FF0–U+2FFF
- \p{InCJK_Symbols_and_Punctuation}: U+3000–U+304F 900 InHiragana}: U+3040–U+309F
- \p{InKatakana}: U+30A0–U+30FF
- \p{InBopomofo}: U+3100–U+312F
- \p{InHangul_Compatibility_Jamo}: U+ 3130–U+318F
- \p{InKanbun}: U+3190–U+319F
- \p{InBopomofo_Extended}: U+31A0–U+31BF
- \p{InKatakana_Phonetic_Extensions}: U+31F0–U+31FF
- \p{InEnclosed_CJK_Letters_and_Months}: U+3200–U+32FF
- \p{InCJK_Compatibility}: U+3300–U+33FF
- \p{InCJK_Unified_Ideographs_Extension_A}: U+4F90 0{DB1400–U+3400–U InYijing_Hexagram_Symbols}: U+4DC0–U+4DFF
- \p{InCJK_Unified_Ideographs}: U+4E00–U+9FFF
- \p{InYi_Syllables}: U+A000–U+A48F
- \p{InYi_Radical: U+A000–U+A48F
- \p{InYi_Radical A490–U+A4CF
- \p{InHangul_Syllables}: U+AC00–U+D7AF
- \p{InHigh_Surrogates}: U+D800–U+DB7F
- \p{InHigh_Private_Use_Surrogates}: U+DB80–U+DBFF
- \p{InLow_Surrogates}: U+DC00–U+DFFF
- \p{InPrivate_Use_Area}: U+E000–U+F8FF
- 9 InCJK_Compatibility_Ideographs}: U+F900–U+FAFF
- \p{InAlphabetic_Presentation_Forms}: U+FB00–U+FB4F
- \p{InArabic_Presentation_Forms-A}: U+FB50–U+FDFF
- \pInArabic_Presentation_Forms-A}: U+FB50–U+FDFF
- \pInAlphabetic_Presentation_Forms: U+FE00–U+FE0F
- \p{InCombining_Half_Marks}: U+FE20–U+FE2F
- \p{InCJK_Compatibility_Forms}: U+FE30–U+FE4F
- \p{InSmall_Form_Variants}: U+FE50–U+FE6F
- \p{InArabic_Presentation_Forms-B}: U+FE70–U+FEFF
- \p{InHalfwidth_and_Fullwidth_Forms}: U+FF00–U+2FF4EF 900 \p{InHalfwidth_and_Fullwidth_Forms}: U+FF00–U+2FF4EF 900 p{InSpecials}: U+FFF0–U+FFFF
Не все механизмы регулярных выражений Unicode используют один и тот же синтаксис для сопоставления блоков Unicode.
Java, Ruby 2.0 и XRegExp используют синтаксис \p{InBlock}, как указано выше. Вместо этого .NET и XML используют \p{IsBlock}. Perl и разновидность JGsoft поддерживают обе нотации. Я рекомендую вам использовать нотацию «In», если ваш механизм регулярных выражений поддерживает ее. «In» можно использовать только для блоков Unicode, а «Is» также можно использовать для свойств и скриптов Unicode, в зависимости от используемой разновидности регулярного выражения. Используя «In», очевидно, что вы сопоставляете блок, а не свойство или скрипт с таким же названием.
В .NET и XML необходимо опустить символы подчеркивания, но оставить дефисы в именах блоков. Например. Используйте \p{IsLatinExtended-A} вместо \p{InLatin_Extended-A}. В Java вы должны опускать дефисы. .NET и XML также сравнивают имена с учетом регистра, в то время как Perl, Ruby и разновидность JGsoft сравнивают их без учета регистра. Java 4 чувствительна к регистру. Java 5 и более поздние версии чувствительны к регистру для префикса «Is», но не для самих имен блоков.
Фактические имена блоков одинаковы во всех механизмах регулярных выражений. Имена блоков определены в стандарте Unicode. PCRE и PHP не поддерживают блоки Unicode, хотя они поддерживают сценарии Unicode.
Вам нужно беспокоиться о разных кодировках?
Хотя вы всегда должны помнить о ловушках, связанных с различными способами кодирования акцентированных символов, вам не всегда нужно о них беспокоиться. Если вы знаете, что ваша входная строка и ваше регулярное выражение используют один и тот же стиль, вам вообще не о чем беспокоиться. Этот процесс называется нормализацией Unicode . Все языки программирования с собственной поддержкой Unicode, такие как Java, C# и VB.NET, имеют библиотечные процедуры для нормализации строк. Если вы нормализуете тему и регулярное выражение перед попыткой сопоставления, несоответствий не будет.
Если вы используете Java, вы можете передать флаг CANON_EQ в качестве второго параметра в Pattern.compile(). Это говорит обработчику регулярных выражений Java считать канонически эквивалентных символов идентичными.
Регулярное выражение à, закодированное как U+00E0, соответствует à, закодированное как U+0061 U+0300, и наоборот. Ни один из других механизмов регулярных выражений в настоящее время не поддерживает каноническую эквивалентность при сопоставлении.
Если вы нажмете клавишу à на клавиатуре, все известные мне текстовые процессоры вставят в файл кодовую точку U+00E0. Поэтому, если вы работаете с текстом, который вы набрали сами, любое регулярное выражение, которое вы наберете сами, будет соответствовать точно так же.
Наконец, если вы используете PowerGREP для поиска в текстовых файлах, закодированных с использованием традиционной кодовой страницы Windows (часто называемой «ANSI») или кодовой страницы ISO-8859, PowerGREP всегда использует замену «один к одному». Поскольку все кодовые страницы Windows или ISO-8859 кодируют символы с диакритическими знаками как одну кодовую точку, почти все программное обеспечение использует одну кодовую точку Unicode для каждого символа при преобразовании файла в Unicode.

или любой исходный код или скомпилированный код в каталогах:
https://www.unicode.org/Public/ПРОГРАММЫ/
https://www.unicode.org/Public/cldr/
http://site.icu-project.org/download/

101 или DFARS 252.227-7014 (19 июня95), если применимо. Для
технические данные, использование, копирование или раскрытие правительством
подлежит ограничениям, изложенным в DFARS 202.227-7015
Технические данные, коммерческие данные и изделия (ноябрь 1995 г.) и настоящее
Соглашение. Для программного обеспечения в соответствии с FAR 12-212 или DFARS
227-7202, в зависимости от обстоятельств, использование, копирование или раскрытие
На правительство распространяются ограничения, изложенные в настоящем
Соглашение.
Unicode, Inc. может вносить улучшения и/или изменения в
продукт(ы) и/или программа(ы), описанные в данной публикации
и/или веб-сайт в любое время.
во всем мире на словесный знак Unicode, логотип Unicode и торговые наименования Unicode.
Пользователь соглашается с тем, что любые споры относительно этого
сайта разрешается исключительно в судах, расположенных в г. Санта
округ Клара, Калифорния. Пользователь соглашается с указанными судами
личной юрисдикции и соглашаетесь отказаться от любого права на передачу
спор на любой другой форум.



