多字节字符集 转 UTF-8,奇数中文转换后就会出现"?"字符 

多字节字符集 转 UTF-8,奇数中文转换后就会出现"?"字符 

7个回答

应该是编码没有统一。把你具体编码环境贴出来看看

具体是什么问题,如果是数据库的话就是建库时没指定字符集

应该还是编码对应统一问题

void ConvertGBKToUtf8(CString &strGBK)
{
int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0);
wchar_t * wszUtf8 = new wchar_t [len+1];
memset(wszUtf8, 0, len);
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, wszUtf8, len);
wszUtf8[len] = '\0';
len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL);
char *szUtf8=new char[len + 10];
memset(szUtf8, 0, len + 10);
WideCharToMultiByte (CP_UTF8, 0, wszUtf8, -1, szUtf8, len+10, NULL,NULL);

strGBK = szUtf8;
delete[] szUtf8;
delete[] wszUtf8;

}

网上找了好多资料 都是先转换成unicode 然后再转成 UTF8的字符 可是就是出现奇数的中文字符 转换过程会丢失最后一个字节

转换之前是“dfasdf测试目录测试测dsf”
转换之后是 “---------------------sf”
'd'字符就丢失了

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问