windowsc++ GB18030/UTF-8转换
时间: 2024-05-10 21:15:33 浏览: 6
在 Windows C++ 中,可以使用 MultiByteToWideChar 和 WideCharToMultiByte 函数来进行 GB18030 和 UTF-8 之间的转换。
将 GB18030 转换为 UTF-8:
```cpp
// gb18030 to utf-8
std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
std::wstring wstr = conv.from_bytes(gb18030_str);
std::string utf8_str = std::string(wstr.begin(), wstr.end());
```
将 UTF-8 转换为 GB18030:
```cpp
// utf-8 to gb18030
std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
std::wstring wstr = std::wstring_convert<std::codecvt_utf8<wchar_t>>().from_bytes(utf8_str);
int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, NULL, 0, NULL, NULL);
char* gb18030_str = new char[len];
WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, gb18030_str, len, NULL, NULL);
std::string result = gb18030_str;
delete[] gb18030_str;
```
其中,gb18030_str 和 utf8_str 分别为 GB18030 和 UTF-8 编码的字符串。需要注意的是,WideCharToMultiByte 函数在转换时需要指定正确的代码页参数,这里使用了 CP_ACP 表示系统默认的 ANSI 代码页。
另外,需要包含头文件 `<locale>` 和 `<codecvt>`。