java.lang.Object java.text.Normalizer
public final class Normalizer
此类提供 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 FFIffi 连字不是明显的语义字符,严格来说,它根本不应该在 Unicode 中,这里包含它是为了与已经提供它的现有字符集兼容。通过“相容 (compatibility)”分解,Unicode 标准将这类字符标识为相应的语义字符。进行分类和搜索时,您会经常希望使用这些映射。
normalize
方法通过将文本转换为规范的组合和分解形式来帮助解决这些问题,正如上面第一个例子所示。另外,您可以使它执行相容分解,以便可以将兼容性字符视为与其等价物一样。最后,normalize
方法将重音重新排列为适当的规范顺序,因此不必考虑重音的重新排列问题。
W3C 通常建议在 NFC 中交换文本。还要注意,大多数遗留字符编码仅使用预组合形式,并且其本身并不对任何合成标记进行编码。对于到此类字符编码的转换,Unicode 文本需要标准化为 NFC。有关更多使用实例,请参见 Unicode Standard Annex。
嵌套类摘要 | |
---|---|
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 |
方法详细信息 |
---|
public static String normalize(CharSequence src, Normalizer.Form form)
src
- 要标准化的 char 值序列。
form
- 标准化形式;
Normalizer.Form.NFC
、
Normalizer.Form.NFD
、
Normalizer.Form.NFKC
、
Normalizer.Form.NFKD
之一
NullPointerException
- 如果
src
或
form
为 null。
public static boolean isNormalized(CharSequence src, Normalizer.Form form)
src
- 要检查的 char 值序列。
form
- 标准化形式;
Normalizer.Form.NFC
、
Normalizer.Form.NFD
、
Normalizer.Form.NFKC
、
Normalizer.Form.NFKD
之一
NullPointerException
- 如果
src
或
form
为 null。