Class Normalizer


  • public final class Normalizer
    extends java.lang.Object

    Utility for the normalization of Unicode Strings to NFC form.

    This class tries to use the java.text.Normalizer class in JDK 1.6 first and, if it the class is not found (Java version < 6), then it will use the ICU4J com.ibm.icu.text.Normalizer class (in this case, a ClassNotFoundException will be thrown if ICU4J is not present).

    Since:
    1.5
    • Field Detail

      • ICU_NORMALIZER_CLASS_NAME

        private static final java.lang.String ICU_NORMALIZER_CLASS_NAME
        See Also:
        Constant Field Values
      • JDK_NORMALIZER_CLASS_NAME

        private static final java.lang.String JDK_NORMALIZER_CLASS_NAME
        See Also:
        Constant Field Values
      • JDK_NORMALIZER_FORM_CLASS_NAME

        private static final java.lang.String JDK_NORMALIZER_FORM_CLASS_NAME
        See Also:
        Constant Field Values
      • useIcuNormalizer

        private static java.lang.Boolean useIcuNormalizer
      • javaTextNormalizerMethod

        private static java.lang.reflect.Method javaTextNormalizerMethod
      • javaTextNormalizerFormNFCConstant

        private static java.lang.Object javaTextNormalizerFormNFCConstant
    • Constructor Detail

      • Normalizer

        private Normalizer()
    • Method Detail

      • normalizeToNfc

        public static java.lang.String normalizeToNfc​(java.lang.String message)

        Normalize Unicode-input message to NFC.

        This algorithm will first try to normalize the input's UNICODE using icu4j's com.ibm.icu.text.Normalizer and, if it is not present at the classpath, will try to use java.text.Normalizer. If this is not present either (this class appeared in JavaSE 6), it will raise an exception.

        Parameters:
        message - the message to be normalized
        Returns:
        the result of the normalization operation
      • normalizeToNfc

        public static char[] normalizeToNfc​(char[] message)

        Normalize Unicode-input message to NFC.

        This algorithm will first try to normalize the input's UNICODE using icu4j's com.ibm.icu.text.Normalizer and, if it is not present at the classpath, will try to use java.text.Normalizer. If this is not present either (this class appeared in JavaSE 6), it will raise an exception.

        Parameters:
        message - the message to be normalized
        Returns:
        the result of the normalization operation
      • initializeIcu4j

        static void initializeIcu4j()
                             throws java.lang.ClassNotFoundException
        Throws:
        java.lang.ClassNotFoundException
      • initializeJavaTextNormalizer

        static void initializeJavaTextNormalizer()
                                          throws java.lang.ClassNotFoundException,
                                                 java.lang.NoSuchMethodException,
                                                 java.lang.NoSuchFieldException,
                                                 java.lang.IllegalAccessException
        Throws:
        java.lang.ClassNotFoundException
        java.lang.NoSuchMethodException
        java.lang.NoSuchFieldException
        java.lang.IllegalAccessException
      • normalizeWithJavaNormalizer

        static char[] normalizeWithJavaNormalizer​(char[] message)
      • normalizeWithIcu4j

        static char[] normalizeWithIcu4j​(char[] message)