每读取到一个 % 好后,将后面的两个字节字符(十六进制数)转换成一个字符(计算后的值,如%CB 变成值为123(0xcb)的一个字符),cgi Form 的中文解码与英文解码没有区别.
解决方案 »
- MFC 用CStdioFile读写文件实现删除文本文件中一行
- VC++ MSComm以及多线程问题
- 复杂的ListCtrl
- 如何用declspac(dllexport)导出一个类的static(静态)变量
- 请问NetBIos编程的问题
- 设置线程不同工作目录的问题
- MFC程序初始化后收到的第一个消息是什么?
- (100分明天结帐)regsvr32 注册一个组件!在NT4.0 Win2000 WinXP 都没有问题,在win98 下注册的时候返回 0x00000485 错误,不知道为什么
- 对话框里面画图
- ___CSDN论坛客户端程序请大家测试____跟帖有分
- 求助
- 请问用udp方式通讯的c/s系统,服务器里bind相应的ip和port,c就可以用sendto往这个地址和端口发送数据,那S往C发送数据怎么办呢?我是指
// 将 XX 形式的十六进制的数字(ASCII码)转换成字符
//-----------------------------------------------------
char cgiForm::x2c( const char *hex )
{
register char digit; digit = (hex[0] >= 'A' ? ((hex[0] & 0xdf) - 'A')+10 : (hex[0] - '0'));
digit *= 16;
digit += (hex[1] >= 'A' ? ((hex[1] & 0xdf) - 'A')+10 : (hex[1] - '0'));
return(digit);
}
//-----------------------------------------------------
// 按 URL 编码规则解码
// %XX 转换成字符
//-----------------------------------------------------
char *cgiForm::unescape( char *s )
{
register int x, y; for( x = 0, y = 0; s[y]; ++x, ++y )
{
if( ( s[x] = s[y] ) == '%')
{
s[x] = x2c( &s[y+1] );
y += 2;
}
}
s[x] = '\0';
return( s );
}