windows-nt/Source/XPSP1/NT/ds/security/inc/utf8.h
2020-09-26 16:20:57 +08:00

82 lines
2.2 KiB
C

//+-------------------------------------------------------------------------
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: utf8.h
//
// Contents: WideChar (UNICODE) to/from UTF8 APIs
//
// APIs: WideCharToUTF8
// UTF8ToWideChar
//
// History: 19-Feb-97 philh created
//--------------------------------------------------------------------------
#ifndef __UTF8_H__
#define __UTF8_H__
#ifdef __cplusplus
extern "C" {
#endif
//+-------------------------------------------------------------------------
// Maps a wide-character (Unicode) string to a new UTF-8 encoded character
// string.
//
// The wide characters are mapped as follows:
//
// Start End Bits UTF-8 Characters
// ------ ------ ---- --------------------------------
// 0x0000 0x007F 7 0x0xxxxxxx
// 0x0080 0x07FF 11 0x110xxxxx 0x10xxxxxx
// 0x0800 0xFFFF 16 0x1110xxxx 0x10xxxxxx 0x10xxxxxx
//
// The parameter and return value semantics are the same as for the
// Win32 API, WideCharToMultiByte.
//
// Note, starting with NT 4.0, WideCharToMultiByte supports CP_UTF8. CP_UTF8
// isn't supported on Win95.
//--------------------------------------------------------------------------
int
WINAPI
WideCharToUTF8(
IN LPCWSTR lpWideCharStr,
IN int cchWideChar,
OUT LPSTR lpUTF8Str,
IN int cchUTF8
);
//+-------------------------------------------------------------------------
// Maps a UTF-8 encoded character string to a new wide-character (Unicode)
// string.
//
// See CertWideCharToUTF8 for how the UTF-8 characters are mapped to wide
// characters.
//
// The parameter and return value semantics are the same as for the
// Win32 API, MultiByteToWideChar.
//
// If the UTF-8 characters don't contain the expected high order bits,
// ERROR_INVALID_PARAMETER is set and 0 is returned.
//
// Note, starting with NT 4.0, MultiByteToWideChar supports CP_UTF8. CP_UTF8
// isn't supported on Win95.
//--------------------------------------------------------------------------
int
WINAPI
UTF8ToWideChar(
IN LPCSTR lpUTF8Str,
IN int cchUTF8,
OUT LPWSTR lpWideCharStr,
IN int cchWideChar
);
#ifdef __cplusplus
} // Balance extern "C" above
#endif
#endif