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);
Кроме того, нормализовать метод перестраивает диакритические знаки в надлежащий канонический порядок, так, чтобы Вы не волновались о перестановке диакритического знака самостоятельно.
Следующий пример представляет приложение, которое позволяет Вам выбрать форму нормализации и шаблон, чтобы нормализовать:
Если Вы не видите, что апплет работает, Вы должны установить, по крайней мере,
Полный код для этого апплета находится в NormSample.java