如何将 Win32
TCHAR
字符串从 <tchar.h>
转换为 UTF-8 字符串?我还没有找到任何文档如何做到这一点,只有 TCHAR
到多字节字符串 (wcstombs()
),它依赖于当前的语言环境。
我无法使用
setlocale()
等,因为我编写了DLL。
我尝试使用
TCHAR
到 char
与 wcstombs()
,但这依赖于当前区域设置,并且并不总是给出 UTF8 字符串。我需要一个不使用当前语言环境的解决方案。
TCHAR
映射到 char
或 wchar_t
,具体取决于编译过程中是否定义了 UNICODE
。
如果
TCHAR
为 wchar_t
,则 wchar_t
字符串在 Windows 上以 UTF-16 编码,因此您可以使用 WideCharToMultiByte()
(或等效项)将 UTF-16 wchar_t
字符串转换为 UTF-8使用 char
代码页的 CP_UTF8
字符串。
如果
TCHAR
是 char
,则必须提前知道 char
字符串的编码语言环境,然后才能将其转换为 UTF-8。如果您知道区域设置,则可以首先使用 MultiByteToWideChar()
(或等效项)和适当的代码页将 char
字符串转换为 UTF-16 wchar_t
字符串,然后按上述方式将其转换为 UTF-8。