#include <stdio.h>
#include <string.h>
/**
* @brief URLEncode 对字符串URL编码
*
* @param str 原字符串
* @param strSize 原字符串长度(不包括最后的\0)
* @param result 结果缓冲区的地址
* @param resultSize 结果缓冲区的大小(包括最后的\0)
*
* @return: >0:resultstring 里实际有效的长度
* 0: 解码失败.
*/
int URLEncode(const char* str, const int strSize, char* result, const int resultSize)
{
int i;
int j = 0;//for result index
char ch;
if ((str==NULL) || (result==NULL) || (strSize<=0) || (resultSize<=0)) {
return 0;
}
for ( i=0; (i<strSize)&&(j<resultSize); ++i) {
ch = str[i];
if (((ch>='A') && (ch<'Z')) ||
((ch>='a') && (ch<'z')) ||
((ch>='0') && (ch<'9'))) {
result[j++] = ch;
} else if (ch == ' ') {
result[j++] = '+';
} else if (ch == '.' || ch == '-' || ch == '_' || ch == '*') {
result[j++] = ch;
} else {
if (j+3 < resultSize) {
sprintf(result+j, "%%%02X", (unsigned char)ch);
j += 3;
} else {
return 0;
}
}
}
result[j] = '\0';
return j;
}
int main(int argc, char* argv[])
{
char* src = argv[1];
unsigned int srclength = strlen(src);
printf("src length: %d\n", strlen(src));
char obj[100] = {0};
URLEncode(src, srclength, obj, 100);
printf("obj: %s\n", obj);
printf("obj: %d\n", strlen(obj));
return 0;
}
分享到:
相关推荐
某些C编译器没有包含utf8形式的url编解码函数,这里自己写了一个。 压缩包中包含.h文件,核心的.cpp文件以及编译好的.dll库。... 注意,该动态库使用时,要求目标机上安装有.net framework3.5 对于win7系统而言,可以...
c语言实现aes ecb模式加密,可以和java,c#,obj-c互相 加,解密。包含base64编码,urlEncode编码 注意,该算法里面的密文是转换成16进制的字串,如果不要16进制,可自行转换,内的函数。 vc6,vs2008,可编译。
该实现提供了两个函数:URLEncode 和 URLDecode。URLEncode 函数用于将字符串进行 URL 编码,而 URLDecode 函数用于将字符串进行 URL 解码。两个函数都使用了缓冲区来存储结果,以便提高性能。 知识点6:应用场景 ...
不过,通过使用Microsoft的MSXML库,C语言可以利用COM接口来实现类似的功能。本主题主要探讨如何在C语言中使用IXMLHttpRequest接口来发送HTTP GET和POST请求,获取服务器返回的文本或XML数据。 首先,我们需要了解...
- `URLEncode.cpp`:实现了`URLEncode.h`中声明的函数或类的方法。这里会包含具体的编码逻辑,包括字符判断、转换为UTF-8、生成十六进制表示等步骤。 为了实现这些功能,C++可能使用了标准库中的`std::string`和`...
从提供的文件名"URLEncode.h"和"URLUncode.h"来看,这似乎包含了用于URL编码和解码的头文件,它们可能是实现这一功能的关键。 编写这样的C代码,通常会涉及以下几个步骤: 1. **定义函数**:创建两个函数,一个用于...
通过理解上述内容,你可以在LoadRunner的C语言脚本中实现字符串到URL编码的转换,无论是通过编写自定义函数,还是利用提供的`code.exe`工具,都能有效地完成任务。同时,记得时刻关注代码的可读性和维护性,以便在...
- 包括strcmp、strncmp、strcasecmp和strncasecmp,它们在PHP中的实现与C语言有所不同,考虑到PHP字符串可能包含'\0',它们使用memcmp而非strcmp,这在某些情况下提高了效率。 9. **is_int和is_numeric**: - is_...
3. **URL编码与解码**:在处理URL时,可能需要使用`urlencode`和`urldecode`函数来确保URL的正确性。 4. **异常处理**:使用try-catch语句来捕获和处理可能出现的错误,如网络连接问题、请求超时、无效的HTML结构等...
它的语法吸收了C语言、Java和Perl的特点,利于学习,且具有丰富的函数库,使得开发过程更为高效。 在实际应用中,基于PHP的一麦短网址服务通常包含以下几个核心知识点: 1. **URL编码与解码**:短网址服务需要对...
$encodedUrl = urlencode($url); echo "$encodedUrl}' />"; } ``` 这里,我们使用了Google的图表API来生成二维码,但这个API并不支持直接处理中文字符,可能会导致乱码。 2. **PHP QR Code类库**: 这是一个...
MyFll是专为Microsoft Visual FoxPro设计的扩展库,部分函数来自任明汉(RMH myF1论坛)前辈提供的myDll代码翻译而成,由于很多功能利用VFP处理比较烦锁,或无法实现,使用此库可有效解决VFP的弱项。部分与Win32Api...