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

FreeBSD Manual Pages

  
 
  

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 can-
     not 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 inter-
     nal representation	which allows each basic	element	to map to a single
     object of type wchar_t.  Multibyte	characters are used for	input and out-
     put 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 distin-
     guished `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 charac-
     ter 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 charac-
     ters 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() func-
     tion 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 con-
     form to ISO/IEC 9899:1990 (``ISO C90'').

BUGS
     The current implementation	does not support shift states.

FreeBSD	11.1			October	6, 2002			  FreeBSD 11.1

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