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 ...
最新文章
- python reduce函数_Python reduce函数作用及实例解析
- JavaScript学习总结(十三)——极简主义法编写JavaScript类
- Mysql数据库和表的增删改查以及数据备份恢复
- SAP IBASE Category 01和03的区别
- 想起温习一下JS中的this apply call arguments
- new 动手学深度学习V2环境安装
- [渝粤教育] 西南科技大学 政治经济学 在线考试复习资料
- 算法笔记_面试题_15.回溯算法模板及示例
- 阿里云keepalived的虚拟ip怎么让外网访问_Keepalived双机热备
- 【SSTFlashFlex51单片机烧录软件的使用方法】
- 数据库——添加外键约束
- Win8彻底关闭UAC
- 人生不过一场旅行,你路过我,我路过你
- ECCV2018论文RBNet:Receptive Field Block Net for Accurate and FastObject Detection
- 最低销售量计算机公式,最低、最高、安全库存量的计算公式
- 安全的远程访问是保护知识产权的关键
- Photoshop 无法安装Tych Panel,提示:could not create folder Run Photoshop as administrator or create the ...
- Android 手机获取加速度传感器加速度数据并自定义采样频率
- 还在用网易云音乐客户端?out了~
- CI/CD :Pipeline