Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
MULTIBYTE(3)           FreeBSD Library Functions Manual           MULTIBYTE(3)

NAME
     mblen, mbstowcs, mbtowc, wcstombs, wctomb - multibyte character support
     for C

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <stdlib.h>

     int
     mblen(const char *mbchar, size_t nbytes);

     size_t
     mbstowcs(wchar_t * restrict wcstring, const char * restrict mbstring,
         size_t nwchars);

     int
     mbtowc(wchar_t * restrict wcharp, const char * restrict mbchar,
         size_t nbytes);

     size_t
     wcstombs(char * restrict mbstring, const wchar_t * restrict wcstring,
         size_t nbytes);

     int
     wctomb(char *mbchar, wchar_t wchar);

DESCRIPTION
     The basic elements of some written natural languages such as Chinese
     cannot be represented uniquely with single C chars.  The C standard
     supports two different ways of dealing with extended natural language
     encodings, wide characters and multibyte characters.  Wide characters are
     an internal representation which allows each basic element to map to a
     single object of type wchar_t.  Multibyte characters are used for input
     and output and code each basic element as a sequence of C chars.
     Individual basic elements may map into one or more (up to MB_LEN_MAX)
     bytes in a multibyte character.

     The current locale (setlocale(3)) governs the interpretation of wide and
     multibyte characters.  The locale category LC_CTYPE specifically controls
     this interpretation.  The wchar_t type is wide enough to hold the largest
     value in the wide character representations for all locales.

     Multibyte strings may contain `shift' indicators to switch to and from
     particular modes within the given representation.  If explicit bytes are
     used to signal shifting, these are not recognized as separate characters
     but are lumped with a neighboring character.  There is always a
     distinguished `initial' shift state.  The mbstowcs() and wcstombs()
     functions assume that multibyte strings are interpreted starting from the
     initial shift state.  The mblen(), mbtowc() and wctomb() functions
     maintain static shift state internally.  A call with a null mbchar
     pointer returns nonzero if the current locale requires shift states, zero
     otherwise; if shift states are required, the shift state is reset to the
     initial state.  The internal shift states are undefined after a call to
     setlocale() with the LC_CTYPE or LC_ALL categories.

     For convenience in processing, the wide character with value 0 (the null
     wide character) is recognized as the wide character string terminator,
     and the character with value 0 (the null byte) is recognized as the
     multibyte character string terminator.  Null bytes are not permitted
     within multibyte characters.

     The mblen() function computes the length in bytes of a multibyte
     character mbchar.  Up to nbytes bytes are examined.

     The mbtowc() function converts a multibyte character mbchar into a wide
     character and stores the result in the object pointed to by wcharp.  Up
     to nbytes bytes are examined.

     The wctomb() function converts a wide character wchar into a multibyte
     character and stores the result in mbchar.  The object pointed to by
     mbchar must be large enough to accommodate the multibyte character.

     The mbstowcs() function converts a multibyte character string mbstring
     into a wide character string wcstring.  No more than nwchars wide
     characters are stored.  A terminating null wide character is appended if
     there is room.

     The wcstombs() function converts a wide character string wcstring into a
     multibyte character string mbstring.  Up to nbytes bytes are stored in
     mbstring.  Partial multibyte characters at the end of the string are not
     stored.  The multibyte character string is null terminated if there is
     room.

RETURN VALUES
     If mbchar is NULL, the mblen(), mbtowc() and wctomb() functions return
     nonzero if shift states are supported, zero otherwise.  If mbchar is
     valid, then these functions return the number of bytes processed in
     mbchar, or -1 if no multibyte character could be recognized or converted.

     The mbstowcs() function returns the number of wide characters converted,
     not counting any terminating null wide character.  The wcstombs()
     function returns the number of bytes converted, not counting any
     terminating null byte.  If any invalid multibyte characters are
     encountered, both functions return -1.

SEE ALSO
     btowc(3), mbrlen(3), mbrtowc(3), mbrune(3), mbsrtowcs(3), rune(3),
     setlocale(3), wcrtomb(3), wcsrtombs(3), euc(4), utf2(4), utf8(5)

STANDARDS
     The mblen(), mbstowcs(), mbtowc(), wcstombs() and wctomb() functions
     conform to ISO/IEC 9899:1990 (``ISO C90'').

BUGS
     The current implementation does not support shift states.

FreeBSD 11.0-PRERELEASE         October 6, 2002        FreeBSD 11.0-PRERELEASE

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | SEE ALSO | STANDARDS | BUGS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=multibyte&sektion=3&manpath=FreeBSD+5.0-RELEASE>

home | help