IsNormalizedString function

Verifies that a string is normalized according to Unicode 4.0 TR#15. For more information, see Using Unicode Normalization to Represent Strings.


BOOL IsNormalizedString(
  _In_ NORM_FORM NormForm,
  _In_ LPCWSTR   lpString,
  _In_ int       cwLength


NormForm [in]

Normalization form to use. NORM_FORM specifies the standard Unicode normalization forms.

lpString [in]

Pointer to the string to test.

cwLength [in]

Length, in characters, of the input string, including a null terminating character. If this value is -1, the function assumes the string to be null-terminated and calculates the length automatically.

Return value

Returns TRUE if the input string is already normalized to the appropriate form, or FALSE otherwise. To get extended error information, the application can call GetLastError, which can return one of the following error codes:

  • ERROR_INVALID_PARAMETER. Any of the parameter values was invalid.
  • ERROR_NO_UNICODE_TRANSLATION. Invalid Unicode was found in string.
  • ERROR_SUCCESS. The action completed successfully but yielded no results.

If you need to reliably determine FALSE from an error condition, then it must call SetLastError(ERROR_SUCCESS).


Windows XP, Windows Server 2003: The required header file and DLL are part of the "Microsoft Internationalized Domain Name (IDN) Mitigation APIs" download, available at the MSDN Download Center.


An example showing the use of this function can be found in NLS: Unicode Normalization Sample.


Minimum supported client

Windows Vista [desktop apps | UWP apps]

Minimum supported server

Windows Server 2008 [desktop apps | UWP apps]


Microsoft Internationalized Domain Name (IDN) Mitigation APIs onWindows XP with SP2 and later, orWindows Server 2003 with SP1


Winnls.h (include Windows.h)



See also

National Language Support
National Language Support Functions
Using Unicode Normalization to Represent Strings