添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

UrlEncode编码的实现

关于UrlEncode的实现(C++),网上有很多不同的版本,对需要编码的字符集的选取并不统一。那么到底有没有标准呢?答案是有的!

绝对不编码的,只有字母、数字、短横线(-)、下划线(_)、点(.)和波浪号(~),其他字符要视情况而定,所以一般性的urlencode只需保留上述字符不进行编码。

  • urlencode编码的工具类, urlencode是一个函数,可将字符串以URL编码,用于编码处理。
  • 函数将字符串以 URL 编码。例如空格就会变成加号。Homepage 中 form 资料传送就是用 urlencode 编码后再送出。
  • 百分号编码(Percent-encoding), 也称作URL编码(URL encoding), 是特定上下文的统一资源定位符 (URI)的编码机制. 实际上也适用于统一资源标志符(URI)的编码. 也用于为"application/x-www-form-urlencoded" MIME准备数据, 因为它用于通过HTTP的请求操作(request)提交HTML表单数据。
  • URI所允许的字符分作保留与未保留. 保留字符是那些具有特殊含义的字符. 例如, 斜线字符用于URL (或者更一般的, URI)不同部分的分界符. 未保留字符没有这些特殊含义. 百分号编码把保留字符表示为特殊字符序列. 上述情形随URI与URI的不同版本规格会有轻微的变化。
  • 部分转换规则如下:
    在这里插入图片描述

  • 1. 字母数字字符 “a” 到 “z”、“A” 到 “Z” 和 “0” 到 “9” 保持不变。

  • 2. 特殊字符 “.”、"-"、"*" 和 “_” 保持不变。

  • 3. 空格字符 " " 转换为一个加号 “+”。

  • 4. 所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 “%xy” 表示,其中 xy 为该字节的两位十六进制表示形式。编码机制是 UTF-8。

  • 举个例子:“中文CPU123”转化为: “%E4%B8%AD%E6%96%87CPU123”。

    注意:如果是GB2312的编码方式, 中文CPU123 的转化结果将是 %d6%d0%ce%c4CPU123

    urldecode采用相反规则。

    下面给出实现:

    unsigned char ToHex(unsigned char x) 
        return  x > 9 ? x + 55 : x + 48; 
    unsigned char 
    在php里面实现 urlencode 是异常简单的事情,但是,想在 c++ 中实现这个功能,可能得自己 开发 了。 基于这个需要,我在网上逛了一趟,找到了一个比较好的实现,并封装成一个小工具,大家以后就方便了。 #ifndef __H_CURL_ENCODE_H__ #define __H_CURL_ENCODE_H__ URLEncode 是这样 编码