[TOC]
0x00 编程语言编码函数
JavaScript
描述:主要对于 escape , encodeURI 与 encodeURIComponent 区别详解:
它们都是用来对URI (RFC-2396)字符串进行编码的全局函数,但是它们的处理方式和使用场景有所不同:
[TOC]
描述:主要对于 escape , encodeURI 与 encodeURIComponent 区别详解:
它们都是用来对URI (RFC-2396)字符串进行编码的全局函数,但是它们的处理方式和使用场景有所不同:
[TOC]
描述:主要对于 escape , encodeURI 与 encodeURIComponent 区别详解:
它们都是用来对URI (RFC-2396)字符串进行编码的全局函数,但是它们的处理方式和使用场景有所不同:1
2
3
4
5
6
7
8
91.保留字符(reserved characters):这类字符是URI中的保留关键字符,它们用于分割URI中的各个部分。这些字符是:";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
2.Mark字符(mark characters):这类字符在RFC-2396中特别定义,但是没有特别说明用途,可能是和别的RFC标准相关。 这些字符是:"-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"
3.基本字符(alphanum characters):这类字符是URI中的主体部分,它包括所有的大写字母、小写字母和数字。
escape不编码字符有69个: *,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个: !,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个: !,',(,),*,-,.,_,~,0-9,a-z,A-Z
实际案例:1
2
3
4
5
6
7
8
9//#Js编码函数
escape(url)
"https%3A//www.jb51.net/article/109025.htm%3Fname%3Dtest%26web%3Dosrf%3Cscript%3Ealert%28/1/%29%3C/script%3E"
encodeURI(url)
"https://www.jb51.net/article/109025.htm?name=test&web=osrf%3Cscript%3Ealert(/1/)%3C/script%3E"
encodeURIComponent(url)
"https%3A%2F%2Fwww.jb51.net%2Farticle%2F109025.htm%3Fname%3Dtest%26web%3Dosrf%3Cscript%3Ealert(%2F1%2F)%3C%2Fscript%3E"
基础示例2:1
2
3
4
5//我们看到 encodeURI 没有编码uri的保留字符 & ,'中'被编码成了 %uFFFD%uFFFD,encodeURIComponent 就编码了保留字符&
alert(encodeURIComponent("A&T Plastic")); //A%26T%20Plastic
alert(escape("A&T Plastic")); //A%26T%20Plastic
alert(encodeURI("A&T Plastic")); //A&T%20Plastic
alert(escape("A&T Plastic中")); //A%26T%20Plastic%uFFFD%uFFFD
总结:编码方式的应用场景
encodeURIComponent(encodeURIComponent('你好'))
,Java后端使用:java.Net.URLDecoder.decode(param,"UTF-8");
1 | # base 加解密(默认base64) |
1 | #生成的随机数转换成为base64/32 |
1 | #八进制转换为Ascll |
1 | [root@WeiGeek ~]# yum -y install bc <!--安装命令--> |
1 | echo "obase=输出进制数;ibase=输入进制数;输入的数字" | bc |
基础示例:1
2
3
4
5
6
7
8
9
10
11#!/bin/bash
if [ $# = 0 ];then
echo "usage:${0} outputbase inputbase jzvalue"
else
oubase=$1
inbase=$2
value=$3
echo "obase=${oubase};ibase=${inbase};${value}" | bc
fi
usage:obase.sh outputbase inputbase jzvalue
#sh obase.sh 16 10 225
同时可以换算其他进制比如7进制 32 进制,更改后面的进制数的十进制即可语法:1
2
3
4//itoa(input变量名, ouput变量名, 进制数);
char dest[10];
itoa(src, dest, 2);
printf("二进制 --> %s\n", dest);
代码案例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i;
char buffer[33];
printf("Enter a number: ");
scanf("%d", &i);
itoa(i, buffer, 10);
printf("decimal: %s\n", buffer);
itoa(i, buffer, 2);
printf("binary: %s\n", buffer);
itoa(i, buffer, 8);
printf("octal: %s\n", buffer);
itoa(i, buffer, 16);
printf("hexadecimal: %s\n", buffer);
return 0;
}
1 | #include <stdio.h> |
编写一个程序,用递归实现将一个十进制的正整数转换成二进制的形式显示
1 | #include <stdio.h> |
你好看友,欢迎关注博主微信公众号哟! ❤
这将是我持续更新文章的动力源泉,谢谢支持!(๑′ᴗ‵๑)
温馨提示: 未解锁的用户不能粘贴复制文章内容哟!
方式1.请访问本博主的B站【WeiyiGeek】首页关注UP主,
将自动随机获取解锁验证码。
Method 2.Please visit 【My Twitter】. There is an article verification code in the homepage.
方式3.扫一扫下方二维码,关注本站官方公众号
回复:验证码
将获取解锁(有效期7天)本站所有技术文章哟!
@WeiyiGeek - 为了能到远方,脚下的每一步都不能少
欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】
或者个人公众号【WeiyiGeek】
联系我。
更多文章来源于【WeiyiGeek Blog - 为了能到远方,脚下的每一步都不能少】, 个人首页地址( https://weiyigeek.top )
专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注、转个发、赞个助】,这将对我的肯定,我将持续整理发布更多优质原创文章!。
最后更新时间:
文章原始路径:_posts/解密编码/字符编码/常见编程语言对字符编码解码一览表.md
转载注明出处,原文地址:https://blog.weiyigeek.top/2019/3-21-503.html
本站文章内容遵循 知识共享 署名 - 非商业性 - 相同方式共享 4.0 国际协议