uchar.h — unicode
    utilities header
The <uchar.h>
    header provides support for the C11 Unicode utilities. The types and
    functions provide means for working with data encoded as UTF-16 and UTF-32.
    When working in non-Unicode locales, these types may not represent Unicode
    code points.
The <uchar.h>
    header defines the following types:
  - char16_t
- An unsigned integer that can represent 16-bit characters, generally a
      single single UTF-16 code unit. A Unicode code point may be one or two
      UTF-16 code units due to surrogate pairs.
- char32_t
- An unsigned integer that can represent 32-bit characters, generally a
      single UTF-32 code unit.
- size_t
- An unsigned integer that represents the size of various objects. This can
      hold the result of the
      sizeof operator.
      See also stddef.h(3HEAD).
- mbstate_t
- An object that holds the state for converting between character sequences
      and wide characters (wchar_t,
      char16_t, char32_t). See also,
      wchar.h(3HEAD).
The<uchar.h> header also
  defines the following functions which are used to convert between
  char16_t and char32_t sequences
  and other character sequences:
  - c16rtomb(3C)
- Convert char16_t sequences to multi-byte character
      sequences.
- c32rtomb(3C)
- Convert char32_t sequences to multi-byte character
      sequences.
- mbrtoc16(3C)
- Convert multi-byte character sequences to char16_t
      sequences.
- mbrtoc32(3C)
- Convert multi-byte character sequences to char32_t
      sequences.