url解码问题

sjchao 2005-11-07 10:59:25
http://www.zangtianshuo.com.cn/mp3/pengchuzij/%e8%87%a7%e5%a4%a9%e6%9c%94%ef%bc%8d%e8%87%a7%e5%a4%a9%e6%9c%94%ef%bc%8d%e8%80%81%e7%8e%89%e7%b1%b3.mp3

用url解码无法将上面这个下载链接正确解码,解出一对乱码。
但是把链接复制到IE,回车后能正确解码,(快车和迅雷都做不到)。
哪位大侠可以给出解码方法?
...全文
186 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2005-11-07
  • 打赏
  • 举报
回复
简单地(用fastnet的TNMURL及UTF8Decode):
NMURL1->InputString="http://www.zangtianshuo.com.cn/mp3/pengchuzij/%e8%87%a7%e5%a4%a9%e6%9c%94%ef%bc%8d%e8%87%a7%e5%a4%a9%e6%9c%94%ef%bc%8d%e8%80%81%e7%8e%89%e7%b1%b3.mp3";
String x=NMURL1->Decode;
x=UTF8Decode(x);
Edit1->Text=x;
------结果为---------------------------
http://www.zangtianshuo.com.cn/mp3/pengchuzij/臧天朔-臧天朔-老玉米.mp3
pp616 2005-11-07
  • 打赏
  • 举报
回复
void DeCode(char *word)
{
int i,j;
for(i = 0, j = 0; i < strlen(word); i++) {
if(word[i] == '%') {
if(word[i+1] >= 'a' && word[i+1] <= 'f') word[j] = word[i+1] - 'a' + 10;
else if(word[i+1] >= 'A' && word[i+1] <= 'F') word[j] = word[i+1] - 'A' + 10;
else if(word[i+1] >= '0' && word[i+1] <= '9') word[j] = word[i+1] - '0';
else {
word[j] = '%';
word[j+1] = word[i+1];
j += 2;
i++;
continue;
}
word[j] *= 16;
if(word[i+2] >= 'a' && word[i+2] <= 'f') word[j] += word[i+2] - 'a' + 10;
else if(word[i+2] >= 'A' && word[i+2] <= 'F') word[j] += word[i+2] - 'A' + 10;
else if(word[i+2] >= '0' && word[i+2] <= '9') word[j] += word[i+2] - '0';
else {
word[j] = '%';
word[j+1] = word[i+1];
word[j+2] = word[i+2];
j += 3;
i += 2;
continue;
}
j++;
i += 2;
} else {
word[j++] = word[i];
}
}
word[j] = 0;
}

这是以前用过的一个解码程序。应该是好的.

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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