把字节数组转换成 GB2312 编码的字符串的 C++ 代码如下:

#include #include <iconv.h>

std::string ByteToGB2312Hans(const char* data, size_t size) { // 创建解码器 iconv_t cd = iconv_open("GB18030", "UTF-8"); if (cd == (iconv_t)-1) { throw std::runtime_error("iconv_open failed"); }

// 将 UTF-8 编码的字节数组转换为 GB2312 编码的字节数组
char* inbuf = const_cast<char*>(data);
size_t inbytesleft = size;
size_t outbytesleft = size * 4;
char* outbuf = new char[outbytesleft];
char* outbufptr = outbuf;
int res = iconv(cd, &inbuf, &inbytesleft, &outbufptr, &outbytesleft);
if (res == -1) {
    delete[] outbuf;
    iconv_close(cd);
    throw std::runtime_error("iconv failed");
}

// 输出解码后的字符串
std::string result(outbuf, outbufptr - outbuf);
delete[] outbuf;
iconv_close(cd);
return result;
func ByteToGB2312Hansdatabyte string 创建解码器decoder = simplifiedchineseGB18030NewDecoder 将 GB2312 编码的字节数组解码为 UTF-8 编码的字符串utf8Data err = decoderBytesdataif err != nil panicerr 输出解码后的字符串fmtPrintl

原文地址: https://www.cveoy.top/t/topic/eF9q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录