Текстовый прогон не находится в форме нормализации Unicode C - PullRequest
14 голосов
/ 29 марта 2011

Пока я пытался проверить свой сайт (http://dvartora.com/DvarTora/), я получаю следующую ошибку:

Текстовый прогон не находится в форме нормализации Unicode C

A: Что это значит?

B: Можно ли это исправить с помощью блокнота ++ и как?

C: Если B - нет, как я могу исправить это с помощью бесплатных инструментов (не Dreamweaver)?

Ответы [ 2 ]

17 голосов
/ 29 марта 2011

Что это значит?

С W3C :

В Unicode можно создавать один и тот же текст с разнымипоследовательности символов.Например, возьмем венгерское слово világ.Четвертая буква может быть сохранена в памяти как предварительно составленное U + 00E1 МАЛЕНЬКОЕ ПИСЬМО A С ОСТРОМ (одиночный символ) или как декомпозированная последовательность U + 0061 МАЛЕНЬКОЕ ПИСЬМО Aс последующим U + 0301 КОМБИНИРОВАНИЕ ОСТРОГО АКЦЕНТА (два символа).

világ = világ

Стандарт Unicode допускает любую из этих альтернатив, но требует, чтобы оба рассматривались какидентичны.Чтобы повысить эффективность, приложение обычно нормализует текст перед выполнением поиска или сравнения.Нормализация, в данном случае, означает преобразование текста для использования всех предварительно составленных или всех разложенных символов.

Существует четыре формы нормализации , определенных стандартом Unicode: NFC, NFD, NFKC и NFKD.C обозначает (предварительно) составленный, а D - разложенный.К обозначает совместимость.Для улучшения совместимости W3C рекомендует использовать в Интернете NFC нормализованный текст.

Помимо «для улучшения взаимодействия», предварительно составленный текст обычно выглядит лучшечем декомпозирует текст.

Как это можно исправить с помощью бесплатных инструментов

Используя функцию, эквивалентную Python text = unicodedata.normalize('NFC', text) на вашем любимом языке программирования.

(или, если вы не планируете писать программу, ваш вопрос следует перенести к суперпользователю или веб-мастеру.)

10 голосов
/ 14 апреля 2013

A. Это означает, что он говорит (см. Объяснение dan04 для краткого ответа и стандарт Unicode для длинного), но это просто означает, что авторы валидатора хотели выдать предупреждение. Правила HTML5 не требуют формы нормализации C (NFC); это скорее что-то, что обычно одобряется W3C.

B. Нет необходимости что-либо исправлять, если только вы не решите, что использование NFC будет лучше. Если вы это сделаете, то есть различные инструменты для автоматического преобразования в NFC, такие как бесплатный редактор BabelPad . Если вам нужно иметь дело только с одним символом, отсутствующим в NFC, вы можете использовать хранилища информации о символах, такие как Fileformat.info поиск символов , чтобы найти каноническое разложение символа и использовать его.

Используете ли вы NFC или нет, зависит от многих соображений и персонажей. Как правило, NFC работает лучше, но в некоторых случаях альтернативная презентация, отличная от NFC, производит более подходящий рендеринг или работает лучше при определенной обработке.

Например, в дублирующем вопросе ссылка Ω была сообщена как инициирующая сообщение. (Валидатор на самом деле также проверяет символы, введенные в качестве таких ссылок, вместо простой проверки NFC на уровне обычного текста.) Ссылка обозначает U + 2126 ЗНАК ОМ «Ω», который определен как канонический эквивалент U + 03A9 ГРЕЧЕСКИЙ КАПИТАЛ ПИСЬМО ОМЕГА «Ω». Стандарт Unicode прямо говорит, что последний является предпочтительным символом. Это также лучше покрыто шрифтами. Но если у вас есть особая причина для использования OHM SIGN, вы можете сделать это, не нарушая текущих правил HTML5, и вы можете игнорировать предупреждение валидатора.

...