`
liyuan66
  • 浏览: 14013 次
社区版块
存档分类
最新评论

[转]C++URL编码和解码

    博客分类:
  • c++
 
阅读更多
以下是url中可能用到的特殊字符及在url中的经过编码后的值:
特殊字符的含义

URL编码

#include<iostream>    
using namespace std;    

char dec2hexChar(short int n) {    
	if ( 0 <= n && n <= 9 ) {    
		return char( short('0') + n );    
	} else if ( 10 <= n && n <= 15 ) {    
		return char( short('A') + n - 10 );    
	} else {    
		return char(0);    
	}    
}    

short int hexChar2dec(char c) {    
	if ( '0'<=c && c<='9' ) {    
		return short(c-'0');    
	} else if ( 'a'<=c && c<='f' ) {    
		return ( short(c-'a') + 10 );    
	} else if ( 'A'<=c && c<='F' ) {    
		return ( short(c-'A') + 10 );    
	} else {    
		return -1;    
	}    
}    

CString escapeURL(const CString &URL)    
{    
	CString result = "";    
	for ( unsigned int i=0; i<URL.GetLength(); i++ ) {    
		char c = URL[i];    
		if (    
			( '0'<=c && c<='9' ) ||    
			( 'a'<=c && c<='z' ) ||    
			( 'A'<=c && c<='Z' ) ||    
			c=='/' || c=='.'    
			) {    
				result += c;    
		} else {    
			int j = (short int)c;    
			if ( j < 0 ) {    
				j += 256;    
			}    
			int i1, i0;    
			i1 = j / 16;    
			i0 = j - i1*16;    
			result += '%';    
			result += dec2hexChar(i1);    
			result += dec2hexChar(i0);    
		}    
	}    
	return result;    
}    

CString deescapeURL(const CString &URL) {    
	CString result = "";    
	for ( unsigned int i=0; i < URL.GetLength(); i++ ) {    
		char c = URL[i];    
		if ( c != '%' ) {    
			result += c;    
		} else {    
			char c1 = URL[++i];    
			char c0 = URL[++i];    
			int num = 0;    
			num += hexChar2dec(c1) * 16 + hexChar2dec(c0);    
			result += char(num);    
		}    
	}    
	return result;    
}  



void CURlDlg::OnBnClickedOk()
{
	CString str = "小草--";    
	CString temp = escapeURL(str);   
	AfxMessageBox(temp);


}






字符 汉字都会被转换
分享到:
评论

相关推荐

    C++URL编码和解码

    C++作为一门强大的系统级编程语言,虽然没有内置的URL编码和解码函数,但开发者可以借助标准库和第三方库来实现这些功能。本文将深入探讨C++中如何进行URL编码和解码。 URL(Uniform Resource Locator)是互联网上...

    linux c++ url和base64编解码

    linux系统c++实现的url和base64编解码 在webserver中会使用 自己实现的一个webserver,详见https://download.csdn.net/download/k117470154/10234299

    url编码与解码

    - 虽然C++标准库没有直接提供URL编码和解码的函数,但可以使用第三方库,如`Poco::URI`库,它提供了方便的API来处理URL编码和解码。 7. **安全性和编码规范** - 在编码URL时,要注意遵守RFC 3986规范,确保正确...

    C++类URL编码和解码使用技巧

    在C++编程中,URL编码和解码是处理网络数据传输时常见的操作。URL(统一资源定位符)编码主要用于确保特殊字符(如空格、引号等)在URL中能够被正确地解析和传递。这是因为某些字符在URL中具有特殊含义,如冒号用于...

    url编码解码源代码

    本话题将详细探讨“url编码解码源代码”,以及如何在CGI(Common Gateway Interface)环境中处理这些编码。 首先,让我们理解URL编码的基本原理。在URL中,某些字符具有特殊含义,如空格通常代表路径分隔,而问号...

    URL编解码程序(自己写)

    在Python中,可以使用内置的`urllib.parse.quote()`函数进行URL编码,`urllib.parse.unquote()`函数进行解码。例如: ```python import urllib.parse url = "http://example.com/你好,世界" encoded_url = urllib...

    Encode_ Decode Tools URL编码解码工具

    `Encode_ Decode Tools`是一款用于URL编码和解码的工具,它可以帮助开发者和用户方便地处理这些编码问题。这款工具可能提供了简单的用户界面,允许用户输入URL或字符串,然后点击按钮进行编码或解码操作。它支持对...

    URL编解码组件

    4. **国际化**:随着互联网的发展,URL编码也需要支持Unicode字符。这涉及到UTF-8编码和punycode转换,以适应国际化的域名系统(IDN)。组件可能包含`encodeUnicode()`和`decodeUnicode()`方法来处理这种情况。 5. ...

    url编码转化,将url转化成unicode进行传输

    本文不仅介绍了URL编码的基本概念和重要性,还提供了一个C/C++版本的具体实现示例。通过对这个示例的理解,可以帮助开发者更好地理解URL编码的工作原理及其在实际项目中的应用。同时,这个示例也为需要进行类似功能...

    URL.zip_url_url decode_url linux_url 解码

    本文将深入探讨URL编码的原理、在C++中实现URL编码和解码的方法,以及如何在Win32和Linux平台上进行跨平台编程。 1. **URL编码原理**: URL中可能包含特殊字符,如空格、引号、尖括号等,这些字符在HTTP协议中具有...

    c++ base64 编码

    C++作为一门通用的编程语言,也支持Base64的编码和解码操作。下面我们将详细探讨C++实现Base64编码的相关知识点。 首先,Base64的基本原理是将每3个字节(24位)的数据转换为4个Base64字符(每个字符6位),总共32...

    QR二维码编码及解码程序

    在"QR二维码编码及解码程序"中,我们有两个关键部分:编码和解码。编码过程是将要存储的信息转化为可以在二维码图像中表示的形式,而解码则是读取并解析这些图像以获取原始信息。 编码程序的工作流程如下: 1. 输入...

    cpp-cppcodec只包括头文件的Cbase64编码解码库

    总的来说,cppcodec是一个实用且高效的编码解码库,特别适合那些希望快速添加Base64、Base32和Hex编码解码功能到C++项目的开发者。其仅包含头文件的设计使得集成过程变得简单,而一致的API则提高了开发效率和代码...

    Base64系列第四篇 C/C++中使用Base64编码解码(从chromium库中抽取)

    Base64是一种常见的...总的来说,从Chromium库中提取Base64的代码可以提供高效且健壮的编码解码功能。开发者在使用时,可以根据自己的需求对这些函数进行调用,并结合`base64_test`中的测试用例确保功能的正确实现。

    C++转UTF8编码.txt

    接下来的`urlEncoding`函数是核心部分,它接受一个`wxString`类型的参数`sIn`,并返回一个新的`wxString`对象,该对象包含了原字符串按照UTF-8编码格式进行URL编码的结果。函数内部遍历了输入字符串的每一个字符,...

    base64编解码C/C++实现

    Base64是一种网络上常见的数据编码方式,它将任意二进制数据...通过阅读和理解`base64.cpp`和`base64.h`文件,可以深入学习Base64编码解码的具体实现,这对于理解网络通信、数据加密以及文件编码等领域都非常有帮助。

    基于linux-c++平台的QR解码程序

    6. 字符解码:将二进制数据转换为文本、URL或其他编码格式。 在“qrcodedecoder-arm”这个文件名中,“arm”可能代表该程序已针对ARM架构进行了优化,ARM架构是广泛应用于嵌入式设备和移动设备(如智能手机和平板...

    易语言 base64编码转图片 如何 提高转换速度.zip

    - **优化算法**:分析并改进解码和转换过程中的算法,减少不必要的内存拷贝和计算,例如使用更高效的Base64解码库。 - **内存管理**:合理控制内存使用,避免频繁的内存分配和释放,可以使用预分配的内存池来提升...

    Base64编码和解码-Libcurl库进行http通讯.zip

    总的来说,这个压缩包提供了C++环境中使用`Libcurl`库进行Base64编码和解码的实例,这对于理解如何在实际项目中处理二进制数据和网络通信非常有帮助。开发者可以借此深入学习`Libcurl`的用法,提高其在网络编程领域...

Global site tag (gtag.js) - Google Analytics