社区
Linux/Unix社区
帖子详情
如何用C、C++解析HTTP请求报文,包括协议头,字符编码,请高手赐教。谢谢。
baisoo
2009-10-16 12:32:50
如何用C、C++解析HTTP请求报文,包括协议头,字符编码,请高手赐教。谢谢。
现在想做一个类似于Web服务器的东东,想根据Http Post的form内容,进行业务处理,这后返回。
但在获取post内容时遇到问题,post的内容是utf-8格式的,用C、C++如何还原为前台组织的内容。包括中文处理。
请高人指点。谢谢。
...全文
1792
2
打赏
收藏
如何用C、C++解析HTTP请求报文,包括协议头,字符编码,请高手赐教。谢谢。
如何用C、C++解析HTTP请求报文,包括协议头,字符编码,请高手赐教。谢谢。 现在想做一个类似于Web服务器的东东,想根据Http Post的form内容,进行业务处理,这后返回。 但在获取post内容时遇到问题,post的内容是utf-8格式的,用C、C++如何还原为前台组织的内容。包括中文处理。 请高人指点。谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
baisoo
2009-10-17
打赏
举报
回复
随然算法不是最优的,但给了我一个思路。
一个更好一点实现算法
#include <stdio.h>
#include <string.h>
/*
* decode encd with URL, the result saved to decd.
* return point to be decoded string.
* auth: baisoo email:baisoo@msn.com
*/
char *decode( char *encd, char decd[] );
int main( int argc, char *argv[] )
{
if( argc < 2 )
return -1;
char decoded[80];
decode( argv[1], decoded );
printf( "%s\n", decoded );
return 0;
}
char *decode( char *encd, char decd[] )
{
if( encd == NULL )
return (char* )0;
int i, j=0;
char *cd = encd;
char p[2];
unsigned int num;
for( i = 0; i < strlen( cd ); i++ )
{
memset( p, '\0', 2 );
if( cd[i] != '%' )
{
decd[j++] = cd[i];
continue;
}
p[0] = cd[++i];
p[1] = cd[++i];
sscanf( p, "%x", &num );
sprintf(p, "%c", num );
decd[j++] = p[0];
}
decd[j] = '\0';
return decd;
}
teng0210
2009-10-16
打赏
举报
回复
浏览器可以帮助你编码
接受的报文数据就是已经编码过的了.
首先看看HTTP协议的RFC文档
下面是我的Blog中的笔记,你可以看看.
中文处理很简单
http://hi.baidu.com/teng0210/blog/item/ecbfad1160d14d09213f2ecc.html
这个是我用select模型写的简单的http服务框架,你可以看看
http://hi.baidu.com/teng0210/blog/item/6d9c8f500a8f46868c5430a7.html
从c语言入门到
c++
使用
高手
对于想入行
C++
开发的朋友,我通过这个套餐课程为您铺设一条从C语言入门到
C++
开发
高手
的语言学习和成长之路,让您在1年内成长到别人要花费5年甚至更久才能成长到的程度,您只需要按照这几门课程的从简到繁的顺序努力...
C/
C++
面试题大汇总
转自:http://pengfei.zhmy.com/archives/2006/41955.html 最近因为找工作,收集了很多C语言方面方面的面试题以及答案。现在新工作搞定了,决定把这些资料发出来,送给有需要的朋友,免得再象我一样到处搜寻,实在辛苦。 发布之前先申明两点: 1 所有资料来自网络(主要是CSDN),本人只是收集和转发。 2 所有问题解答(尤其是代码)只是参考,不保证正确。 先发...
C/
C++
面试题目汇总
C/
C++
面试题目汇总 最近因为找工作,收集了很多C语言方面方面的面试题以及答案。现在新工作搞定了,决定把这些资料发出来,送给有需要的朋友,免得再象我一样到处搜寻,实在辛苦。 发布之前先申明两点: 1 所有资料来自网络(主要是CSDN),本人只是收集和转发。 2 所有问题解答(尤其是代码)只是参考,不保证正确。 先发基本问题,再发编程问题.......... 想
【转】C/
C++
笔试题
1.static有什么用途?(
请
至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用
C++
笔试题汇总(6)
1.引言本文的写作目的并不在于提供C/
C++
程序员求职面试指导,而旨在从技术上分 析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最 简单的strcpy 函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个 strcpy 函数吗?我们都觉得自己能,可是我们写出的strcpy 很可能只能拿到10 分中的2 分。 读者可从本文看到strcpy 函数从2 分到1
Linux/Unix社区
23,121
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章