JavaTM 2 Platform
Standard Ed. 6

java.text
類別 Normalizer

java.lang.Object
  繼承者 java.text.Normalizer

public final class Normalizer
extends Object

此類別提供 normalize 方法,它把 Unicode 文本轉換為等效的組合或分解形式,允許對文本進行更方便地分類別和搜尋。normalize 方法支持在 Unicode Standard Annex #15 — Unicode Normalization Forms 中描述的標準的標準化形式。

在 Unicode 中,帶有重音或其他裝飾的字元可以用幾種不同的方式進行編碼。例如,字元 A-acute。在 Unicode 中,可以被編碼為單個字元(“組合”形式):

U+00C1    LATIN CAPITAL LETTER A WITH ACUTE

或者兩個單獨的字元(“分解”形式):

U+0041    LATIN CAPITAL LETTER A
U+0301    COMBINING ACUTE ACCENT

然而,對程序的使用者而言,這兩個序列都可以被視為同樣的“使用者級”字元“帶有 acute 重音的 A”。當您搜尋或比較文本時,必須確保這兩個序列被視為是等效的。另外,您必須處理帶有多個重音的字元。有時候一個字元的組合重音順序很重要,而在另一些情況下,不同順序的重音序列則可能完全等效。

類似地,字元串 "ffi" 可被編碼為三個單獨的字母。

U+0066    LATIN SMALL LETTER F
U+0066    LATIN SMALL LETTER F
U+0069    LATIN SMALL LETTER I

或者單個字元

U+FB03    LATIN SMALL LIGATURE FFI

ffi 連字不是明顯的語義字元,嚴格來說,它根本不應該在 Unicode 中,這裡包含它是為了與已經提供它的現有字元集相容。通過“相容 (compatibility)”分解,Unicode 標準將這類別字元標識為相應的語義字元。進行分類別和搜尋時,您會經常希望使用這些映射。

normalize 方法通過將文本轉換為規範的組合和分解形式來說明解決這些問題,正如上面第一個例子所示。另外,您可以使它執行相容分解,以便可以將相容性字元視為與其等價物一樣。最後,normalize 方法將重音重新排列為適當的規範順序,因此不必考慮重音的重新排列問題。

W3C 通常建議在 NFC 中交換文本。還要注意,大多數遺留字元編碼僅使用預組合形式,並且其本身並不對任何合成標記進行編碼。對於到此類別字元編碼的轉換,Unicode 文本需要標準化為 NFC。有關更多使用實例,請參見 Unicode Standard Annex。

從以下版本開始:
1.6

巢狀類別摘要
static class Normalizer.Form
          此列舉提供在 Unicode Standard Annex #15 — Unicode Normalization Forms 中描述的四個 Unicode 標準化形式的常數,以及存取這些常數的兩個方法。
 
方法摘要
static boolean isNormalized(CharSequence src, Normalizer.Form form)
          確定給定的 char 值序列是否被標準化。
static String normalize(CharSequence src, Normalizer.Form form)
          標準化 char 值序列。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法詳細資訊

normalize

public static String normalize(CharSequence src,
                               Normalizer.Form form)
標準化 char 值序列。將根據指定標準化形式對序列進行標準化。

參數:
src - 要標準化的 char 值序列。
form - 標準化形式;Normalizer.Form.NFCNormalizer.Form.NFDNormalizer.Form.NFKCNormalizer.Form.NFKD 之一
返回:
已標準化的 String
拋出:
NullPointerException - 如果 srcform 為 null。

isNormalized

public static boolean isNormalized(CharSequence src,
                                   Normalizer.Form form)
確定給定的 char 值序列是否被標準化。

參數:
src - 要檢查的 char 值序列。
form - 標準化形式;Normalizer.Form.NFCNormalizer.Form.NFDNormalizer.Form.NFKCNormalizer.Form.NFKD 之一
返回:
如果 char 值序列已被標準化,則返回 true;否則返回 false 。
拋出:
NullPointerException - 如果 srcform 為 null。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only