Spec-Zone .ru
спецификации, руководства, описания, API
След: Интернационализация
Урок: Работа с текстом
Нормализация текста
Домашняя страница > Интернационализация > Работа с текстом

Нормализация текста

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

Что может быть нормализовано? Нормализация применима, когда Вы должны преобразовать символы с диакритическими знаками, изменить весь регистр букв, анализировать лигатуры, или преобразовать half-width katakana символы к полным-width символам и так далее.

В соответствии с Приложением Стандарта Unicode #15 API Нормэлизера поддерживает все следующие четыре текстовых формы нормализации Unicode, которые определяются в java.text.Normalizer.Form:

Давайте исследуем, как латинская строчная буква "o" с диерезисом может быть нормализована при использовании этих форм нормализации:

Исходное слово NFC NFD NFKC NFKD
"schön" "schön" "scho\u0308n" "schön" "scho\u0308n"

Можно заметить, что исходное слово оставляют неизменным в NFC и NFKC. Это - то, потому что с NFD и NFKD, составные символы отображаются на их канонические разложения. Но с NFC и NFKC, последовательности комбинированного символа отображаются на составные объекты, если возможный. Нет никакого составного объекта для диерезиса, таким образом, это оставляют анализируемым в NFC и NFKC.

В примере кода, NormSample.java, который представляется позже, можно также заметить другую функцию нормализации. half-width и полные-width katakana символы будут иметь то же самое разложение совместимости и являются таким образом эквивалентами совместимости. Однако, они не канонические эквиваленты.

Убедиться, что Вы действительно должны нормализовать текст, который можно использовать isNormalized метод, чтобы определить, нормализуется ли данная последовательность значений случайной работы. Если этот метод возвращает false, это означает, что необходимо нормализовать эту последовательность, и следует использовать normalize метод, который нормализует a char значения согласно указанной форме нормализации. Например, чтобы преобразовать текст в каноническую анализируемую форму необходимо использовать следующий normalize метод:

normalized_string = Normalizer.normalize(target_chars, Normalizer.Form.NFD);

Кроме того, нормализовать метод перестраивает диакритические знаки в надлежащий канонический порядок, так, чтобы Вы не волновались о перестановке диакритического знака самостоятельно.

Следующий пример представляет приложение, которое позволяет Вам выбрать форму нормализации и шаблон, чтобы нормализовать:


Отметьте:  

Если Вы не видите, что апплет работает, Вы должны установить, по крайней мере, Java Комплект разработчика SE (JDK) 7 выпусков.


Полный код для этого апплета находится в NormSample.java


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Символьные и Потоки байтов
Следующая страница: Работа с Двунаправленным текстом с Классом JTextComponent