C++ 版本UrlEncoder编码解码工具:支持ANSIC和UTF8格式
1、URLEncoder是什么
URLEncoderHTML 格式编码的实用工具类。该类包含了将 String 转换为 application/x-www-form-urlencoded MIME 格式的静态方法。
对 string字符串 编码时,使用以下规则:
- 字母数字字符 “a” 到 “z”、“A” 到 “Z” 和 “0” 到 “9” 保持不变。
- 特殊字符 “.”、“-”、“*” 和 "_"保持不变。
- 空格字符 " " 转换为一个加号 “+”。
- 所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串"%xy"表示,其中 xy 为该字节的两位十六进制表示形式。推荐的编码机制是 UTF-8。
2、为什么需要URLEncoder
在URI的最初设计时,希望能通过书面转录,因此URI的构成字符必须是可写的ASCII字符。在这些可书写的字符里,由于一些字符在不同操作系统的编码有不同的解析,被包含在“不安全字符”之中,要格外注意。
那么哪些字符是需要转化的呢?
- ASCII 的控制字符
这些字符都是不可打印的,自然需要进行转化。
- 一些非ASCII字符
这些字符自然是非法的字符范围。转化也是理所当然的了。
- 一些保留字符
很明显最常见的就是“&”了,这个如果出现在url中了,那你认为是url中的一个字符呢,还是特殊的参数分割用的呢?
- 一些不安全的字符了。
例如:空格。为了防止引起歧义,需要被转化为“+”。
url转义其实也只是为了符合url的规范。因此,URLEncoder只是为了url中一些非ascii字符,可以正确无误的被传输。
3、转码工具代码
先看效果:
代码:
#include "stdafx.h"
#include <windows.h>
#include <wchar.h>
#include "url_code.h"int main(int argc, char *argv[])
{Encoder encoder;std::string strResult;std::string sUTF8 = "UTF8格式URL编码测试数据";printf("UTF8格式原始Url:%s\r\n", sUTF8.c_str());strResult = encoder.UTF8UrlEncode(sUTF8);printf("UTF8格式Url编码:%s\r\n", strResult.c_str());std::string sUTF8Ex = "UTF8%E6%A0%BC%E5%BC%8FURL%E7%BC%96%E7%A0%81%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE";printf("UTF8格式加密Url:%s\r\n", sUTF8Ex.c_str());strResult = encoder.UTF8UrlDecode(sUTF8Ex);printf("UTF8格式Url解码:%s\r\n", strResult.c_str());printf("\r\n \r\n");std::string sANSIC = "ANSIC格式URL编码测试数据";printf("ANSIC格式原始Url:%s\r\n", sANSIC.c_str());strResult = encoder.UrlEncode(sANSIC);printf("ANSIC格式Url编码:%s\r\n", strResult.c_str());std::string sANSICEx = "ANSIC%B8%F1%CA%BDURL%B1%E0%C2%EB%B2%E2%CA%D4%CA%FD%BE%DD";printf("ANSIC格式加密Url:%s\r\n", sANSICEx.c_str());strResult = encoder.UrlDecode(sANSICEx);printf("ANSIC格式Url解码:%s\r\n", strResult.c_str());return 0;
}
4、源码下载地址
下载地址
C++ 版本UrlEncoder编码解码工具:支持ANSIC和UTF8格式相关推荐
- URL编码解码工具类
/****************************************************************************** * CREATETIME : 2016年 ...
- 条形码和二维码编码解码工具类源码
有一个好的工具,会让你的开发事半功倍.再将讲这个工具类之前,我先给小白补充一点条形码和二维码(以下基础知识选自,我本科阶段的一本教材:<物联网导论>(刘云浩 编著).有对物联网感兴趣的,可 ...
- WebP 文件及其编码解码工具(WebPconv)
1. webp 文件 与JPEG相同,WebP 是一种有损压缩利用预测编码技术. WebP 是 Google 新推出的影像技术,它可让网页图档有效进行压缩,同时在质量相同的情况下,WebP 格式图像的 ...
- JavaScript Eval Encode/Decode JavaScript Eval 在线加密/解密, 编码/解码工具
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fr ...
- Linux编码解码指令-base64
文章目录 一.编码 二.解码 三.常见编码方式整理 一.编码 从标准输入读取内容 base64 输入要编码的内容,回车换行,Ctrl+D结束输入 借助echo echo 字符串 |base64 借助& ...
- 移动端图片_编码解码调研
图片通常是移动端流量耗费最多的部分,并且占据着重要的视觉空间.合理的图片格式选用和优化可以为你节省带宽.提升视觉效果.在这篇文章里我会分析一下目前主流和新兴的几种图片格式的特点.性能分析.参数调优,以 ...
- Base64及Base64Url的编码解码
在线工具请参考:在线base64编码解码工具 在线base64url编码解码工具
- java的Url和Html编码解码
今天使用UEditor的时候发现传到Controller里面的富文本内容是编码过的,很想当然的就以为是经过HtmlEncode过的,所以采用了Apache Common Lang包做编码解码工具,调用 ...
- 编码/解码和进制转化工具hURL
编码/解码和进制转化工具hURL 在安全应用中,各种编码方式被广泛应用,如URL编码.HTML编码.BASE64等.而在数据分析时候,各种进制的转化也尤为频繁.为了方便解决这类问题,Kali Linu ...
最新文章
- 一道百度算法面试题讲解
- 什么是CNN?机器学习入门贴,Facebook员工打造,47k访问量
- A/B测试:概念 ≠ 执行
- Cmake中的find_package功能
- 2018年最实用的6个机器学习项目
- python 如何将字符串列表合并后转换成字符串? ''.join(List(str))函数
- Leecode 268. 丢失的数字——Leecode每日一题系列
- RecycleView 与 Elevation
- Android插件化开发基础之App如何动态加载类
- 微服务精华问答 | 微服务如何测试?
- 理解 Delphi 的类(十) - 深入方法[27] - 递归函数: 简单示例
- 如何用java输出方格_第三章 Java类基础知识作业之(输出5*5数字方格,打印星塔)...
- Linux-rhel6.4 编译安装PHP,Nginx与php连接
- 输出100以内的所有素数
- 【PTA】 统计素数并求和
- 纪念我的第一次面试——华为研发类面试
- 提供小图标(Icon)的网站(不定时更新)
- JAVA根据开始时间和结束时间获取天数
- uview框架u-form表单校验,rules校验对象中对象的值(解决 当form属性嵌套对象时未取到值的问题)
- html页面弹出 聊天框,网页弹出在线交流聊天窗口的功能如何实现 - 快商通