请问在VC中如何转化UTF-8下的URLEncode编码?

RockyWoo 2004-08-04 12:15:56
比如UTF-8环境的客户端发送:中国
HTTP请求经过转化后会传过来这样的串:%E4%B8%AD%E5%9B%BD
请问,我如何将这串值还原成普通字符串?
...全文
716 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangnanonnet 2004-08-04
  • 打赏
  • 举报
回复
UTF8应该直接就能显示UNICODE才对。他应该是单字节的UNICODE编码,你的意思是不是把字符串“E4B8ADE59BBD”显示成汉字?你试试这个
// 可打印字符串转换为字节数据
// 如:"C8329BFD0E01" --> {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01}
// pSrc: 源字符串指针
// pDst: 目标数据指针
// nSrcLength: 源字符串长度
// 返回: 目标数据长度
int CMobileModule::gsmString2Bytes(const char* pSrc, unsigned char* pDst, int nSrcLength)
{
for(int i=0; i<nSrcLength; i+=2)
{
// 输出高4位
if(*pSrc>='0' && *pSrc<='9')
{
*pDst = (*pSrc - '0') << 4;
}
else
{
*pDst = (*pSrc - 'A' + 10) << 4;
}

pSrc++;

// 输出低4位
if(*pSrc>='0' && *pSrc<='9')
{
*pDst |= *pSrc - '0';
}
else
{
*pDst |= *pSrc - 'A' + 10;
}
pSrc++;
pDst++;
}

// 返回目标数据长度
return nSrcLength / 2;
}
RockyWoo 2004-08-04
  • 打赏
  • 举报
回复
为什么没人回答阿?5555555555
RockyWoo 2004-08-04
  • 打赏
  • 举报
回复
问题是,该如何将:%E4%B8%AD%E5%9B%BD转成utf-8编码呢?
gracezhu 2004-08-04
  • 打赏
  • 举报
回复
//将UTF8字符串转换为gb2312
_bstr_t CLangConvert::ConvertUTF8toGB2312(CString str)
{
int n=MultiByteToWideChar(CP_UTF8,0,str,str.GetLength(),NULL,0);
WCHAR * pChar = new WCHAR[n+1];
n=MultiByteToWideChar(CP_UTF8,0,str,str.GetLength(),pChar,n);
pChar[n]=0;
OLECHAR * pTempBuffer = pChar;
BSTR strPassword = SysAllocString(pTempBuffer);
_bstr_t aa (strPassword,FALSE);
SysFreeString(strPassword);
delete []pChar;
return aa;
}
RockyWoo 2004-08-04
  • 打赏
  • 举报
回复
这个函数不能把我所获取的E4B8ADE59BBD转成“中国”的gb2312字符阿。。。。
utf-8是3个字节的

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧