MFC中Unicode下汉字转换ULR串

CStringA EncodeStr(CStringA strSrc, int sourceCodepage, int targetCodepage)
{
    int  len = strSrc.GetLength();
    int  unicodeLen = MultiByteToWideChar(sourceCodepage, 0, strSrc.GetBuffer(0), -1, NULL, 0);
    wchar_t  *pUnicode;
    pUnicode = new  wchar_t[unicodeLen + 1];
    memset(pUnicode, 0, (unicodeLen + 1)*sizeof(wchar_t));
    unicodeLen = MultiByteToWideChar(sourceCodepage, 0, strSrc.GetBuffer(0), -1, (LPWSTR)pUnicode, unicodeLen);
    CString  rt1(pUnicode);

    BYTE  *pTargetData=NULL;
    int  targetLen = WideCharToMultiByte(targetCodepage, 0, (LPWSTR)pUnicode, -1, (char  *)pTargetData, 0, NULL, NULL);

    pTargetData = new  BYTE[targetLen + 1];
    memset(pTargetData, 0, targetLen + 1);
    targetLen = WideCharToMultiByte(targetCodepage, 0, (LPWSTR)pUnicode, -1, (char  *)pTargetData, targetLen, NULL, NULL);

    CStringA  rt;
    rt.Format("%s", pTargetData);
    delete[]pUnicode;
    delete[]pTargetData;
    return  rt;
}

// Chinese characters into URL string
CStringA URLEncode(CStringA strSrc)
{
    BYTE byte;
    CStringA strTarget = "";
    CStringA strTempKey = "";
    strSrc = EncodeStr(strSrc, CP_ACP, CP_UTF8);
    for (int i = 0; i < strSrc.GetLength(); i++)
    {
        byte = strSrc.GetAt(i);
        if (0 <= byte&&byte < 128)
        {
            strTempKey.Format("%c", byte);
        }
        else
        {
            strTempKey.Format("%%%02x", byte);
            strTempKey.MakeUpper();
        }
        strTarget += strTempKey;
    }
    return strTarget;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值