gpt4 book ai didi

c++ - Visual Studio 多字节字符到单字节

转载 作者:行者123 更新时间:2023-11-30 04:09:50 25 4
gpt4 key购买 nike

有没有一种简单的方法可以将多字节 UTF8 数据(从 Google Contacts API 通过 https://www.google.com/m8/feeds/ )转换为单字节?我知道扩展的 ASCII 集是非标准的,但是,例如,我的将在 MFC CListBox 中显示信息的程序很乐意将“E acute”显示为 0xE9。我只需要它来应付几个类似的欧洲符号。我发现我可以使用 MultiByteToWideChar() 转换所有内容,但如果可能的话,我不想更改很多函数来接受宽字符。谢谢。

最佳答案

如果您需要将 char *UTF8 转换为 ANSI,请尝试以下函数:

// change encoding from UTF8 to ANSI
char* change_encoding_from_UTF8_to_ANSI(char* szU8)
{
int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0);
wchar_t* wszString = new wchar_t[wcsLen + 1];
::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen);
wszString[wcsLen] = '\0';

int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
char* szAnsi = new char[ansiLen + 1];
::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);
szAnsi[ansiLen] = '\0';

delete []wszString;
return szAnsi;
}

关于c++ - Visual Studio 多字节字符到单字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20933527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com