【MFC】UTF-8与Unicode编码转换

MFC 专栏收录该内容
32 篇文章 1 订阅

环境

适用范围:MFC。

字符集:多字节字符集。

 

声明

CString             UTF8AndUnicode_Convert(CString &strSource, UINT nSourceCodePage, UINT nTargetCodePage);

 

定义

CString UTF8AndUnicode_Convert(CString &strSource, UINT nSourceCodePage, UINT nTargetCodePage)
{
    CString        strTarget; 
	
    wchar_t        *pWideBuf;
    int            nWideBufLen;
	
    char           *pMultiBuf;
    int            nMiltiBufLen;

    int            nSourceLen;

    nSourceLen = strSource.GetLength(); 
    nWideBufLen = MultiByteToWideChar(nSourceCodePage, 0, strSource, -1, NULL, 0); 
	
    pWideBuf = new wchar_t[nWideBufLen+1]; 
    memset(pWideBuf, 0, (nWideBufLen + 1) * sizeof(wchar_t)); 
	
    MultiByteToWideChar(nSourceCodePage, 0, strSource, -1, (LPWSTR)pWideBuf, nWideBufLen);

    pMultiBuf = NULL;
    nMiltiBufLen = WideCharToMultiByte(nTargetCodePage, 0, (LPWSTR)pWideBuf, -1, (char *)pMultiBuf, 0, NULL, NULL); 
	
    pMultiBuf = new char[nMiltiBufLen+1]; 
    memset(pMultiBuf, 0, nMiltiBufLen + 1); 

    WideCharToMultiByte(nTargetCodePage, 0, (LPWSTR)pWideBuf, -1, (char *)pMultiBuf, nMiltiBufLen, NULL, NULL); 
	
    strTarget.Format(_T("%s"), pMultiBuf); 
	
    delete pWideBuf; 
    delete pMultiBuf; 
	
    return strTarget; 
}

 

调用方法

UTF-8转Unicode

m_strUnicode = UTF8AndUnicode_Convert(m_strUTF8, CP_UTF8, CP_ACP);

Unicode转UTF-8

m_strUTF8 = UTF8AndUnicode_Convert(m_strUnicode, CP_ACP, CP_UTF8);

 

  • 1
    点赞
  • 2
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值