请问各位大虾,VC里如何将UTF-8转换成GB2312编码?
解决方案 »
- 五一快乐!懒散一下吧!
- 怎样设置DrawText函数中字体的颜色?
- 转换gif图片中的字,此转换类似word中"黑体"变成"华文彩云",请问如何转换?
- 怎么动态改变菜单的可用与否属性?
- 在MFC中弹出选择目录的对话框是哪个类啊??
- 我想在我的程序中加进播放MP3的功能,请问有什么简单的方法来做吗!
- 控件、分割窗口的样式
- 为什么在对话框程序的PreTranslateMessage里面显示一个模态对话框会出错?关注!!!
- 怎样下载《COM原理与应用》(潘爱民)的例子代码
- 我的VC++6.0在对话框中不能使用rich edit控件,请指教!谢谢!
- dll中的函数能够同时被两个程序调用吗?在dll中输出日志的方法?
- MessageBox如何显示以下字符串
转换的函数是: MutltByteToWideChar 和 WideCharToMultByte3. 关于这些概念问题的完整描述,参见文章:
http://www.regexlab.com/zh/encoding.htm
{
char* uchar = (char *)pOut;
uchar[1] = ((pText[0] & 0x0F) << 4) + ((pText[1] >> 2) & 0x0F);
uchar[0] = ((pText[1] & 0x03) << 6) + (pText[2] & 0x3F);
return;
} void UnicodeToGB2312(char* pOut,unsigned short uData)
{
WideCharToMultiByte(CP_ACP,NULL,&uData,1,pOut,sizeof(WCHAR),NULL,NULL);
return;
} void UTF_8ToGB2312(CString &pOut, char *pText, int pLen)
{
char * newBuf = new char[pLen];
char Ctemp[4];
memset(Ctemp,0,4); int i =0;
int j = 0;
while(i < pLen)
{
if(pText[i] > 0)
{
newBuf[j++] = pText[i++];
}
else
{
WCHAR Wtemp;
UTF_8ToUnicode(&Wtemp,pText + i);
UnicodeToGB2312(Ctemp,Wtemp);
newBuf[j] = Ctemp[0];
newBuf[j + 1] = Ctemp[1]; i += 3;
j += 2;
}
}
newBuf[j] = '\0';
pOut = newBuf;
delete []newBuf;
return;
}在调用UTF_8ToGB2312方法时,原来UTF8编码的值经过此方法处理变成问号,请各位帮忙看看这个方法哪有误...