@node mbrtowc @section @code{mbrtowc} @findex mbrtowc POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/mbrtowc.html} Gnulib module: mbrtowc Portability problems fixed by Gnulib: @itemize @item This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, IRIX 6.5, mingw. @item In the C or POSIX locales, this function can return @code{(size_t) -1} and set @code{errno} to @code{EILSEQ}: glibc 2.35. @item This function returns 0 instead of @code{(size_t) -2} when the input is empty: glibc 2.19. @item This function returns @code{(size_t) -1} instead of @code{(size_t) -2} when the input is empty: AIX 7.2. @item This function does not put the state into non-initial state when parsing an incomplete multibyte character on some platforms: AIX 7.2. @item This function stores a wide character when when parsing an incomplete multibyte character on some platforms: MSVC 14. @item This function returns the total number of bytes that make up the multibyte character, not the number of bytes that were needed to complete the multibyte character, on some platforms: HP-UX 11.11, Solaris 11 2010-11, mingw, possibly MSVC 14. @item This function may not return 0 when parsing the NUL character on some platforms: Solaris 9. @end itemize Portability problems not fixed by Gnulib: @itemize @item In UTF-8 locales, this function may return wide characters up to 0x7FFFFFFF (that is, beyond 0x0010FFFF) on some platforms: @c https://sourceware.org/bugzilla/show_bug.cgi?id=2373 @c https://sourceware.org/bugzilla/show_bug.cgi?id=26034 glibc 2.34. @item On Windows and 32-bit AIX platforms, @code{wchar_t} is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the ISO C11 function @code{mbrtoc32}, provided by Gnulib module @code{mbrtoc32}, operates on 32-bit wide characters and therefore does not have this limitation. @end itemize