WideCharToMultiByte

If the wide character string contains a character in the Unicode Private Use Zone, this function maps it to its multibyte character counterpart, if such a mapping exists. The code page specified in this function must contain an EUDC code range for the mapping to occur. If it does not, the function will return the default character for any characters in the Unicode Private Use Zone.

WideCharToMultiByte will preserve the round-trip mapping from a code page to Unicode and back to the original code page of EUDC characters. If an EUDC character from code page 932 is mapped to Unicode, and then mapped from Unicode to another code page with an EUDC range, it is likely that the original 932 EUDC character will be mapped to a different EUDC character in the destination code page. If Unicode data, which uses code points within the Unicode Private Use Zone, is mapped to a code page which has an EUDC range defined, it is possible that this Unicode data will be mapped into the code pages EUDC range.