This may be redundant, but the ICU libraries will do whatever you need, and you can use them on both Windows and Linux.
, , Windows MultiByteToWideChar WideCharToMultiByte UTF-8
UTF-16. :
MultiByteToWideChar( CP_UTF8, 0, myUtf8String, -1,
myUtf16Buf, lengthOfUtf16Buf );
Linux libidn , . UTF-8 UCS, , , UTF-32 . :
// utf-8 to UCS
ucsStr = stringprep_utf8_to_ucs4( "asdf", 4, &items );
Linux , UTF-8. UTF-16, , Linux .