Win32 <tchar.h> TCHAR 转 UTF-8?

问题描述 投票:0回答:1

如何将 Win32

TCHAR
字符串从
<tchar.h>
转换为 UTF-8 字符串?我还没有找到任何文档如何做到这一点,只有
TCHAR
到多字节字符串 (
wcstombs()
),它依赖于当前的语言环境。

我无法使用

setlocale()
等,因为我编写了DLL。

我尝试使用

TCHAR
char
wcstombs()
,但这依赖于当前区域设置,并且并不总是给出 UTF8 字符串。我需要一个不使用当前语言环境的解决方案。

winapi unicode tchar
1个回答
0
投票

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。

© www.soinside.com 2019 - 2024. All rights reserved.