首页 > 其他分享 >编码揭秘:解构字符%20背后的秘密与百分号编码艺术

编码揭秘:解构字符%20背后的秘密与百分号编码艺术

时间:2024-03-26 09:12:13浏览次数:17  
标签:百分号 编码 UTF 字符 解构 escape encodeURIComponent encodeURI

前言

提到这个 %20,想必大家都见过,熟悉一点编码的人,还会知道这玩意就是空格转换而来! 那么我们一起破解, 如何编码而来?

我们今天继续学习前端编码知识, 其他编码文章:

之后再补上

  • UTF-16 编码
  • UTF-8 编码

前端所需要的基本编码知识体系就基本形成。

更多前端基础进阶知识,可以

  1. 关注专栏 前端基础进阶,
  2. 关注公众号成长的程序世界
  3. 进交流群dirge-cloud

Unicode基础知识

Unicode 只是一个字符集, 其为每个字符提供了一个编号,我们称之为码点

Unicode 可以使用的编码有三种,分别是:

UFT-8:一种 变长的编码方案,使用 1~6 个字节来存储。
UTF-16:对于码点小于0xFFFF(65535)的字符,两个字节存储,反之采用 4个字节来存储。
UFT-32:一种 固定长度的编码方案,不管字符编号大小,始终使用 4 个字节来存储。

所以UTF-8个UTF-16都属于变长编码方案,而UTF-32属于固定长度编码方案。

固定长度编码方案优点当然是简单啊,缺点嘛,费空间, 这就是为嘛还要有UTF-16和UTF-8。

我们网络传输常用 UTF-8, 而javascript运行时的字符编码是 UTF-16.

%20怎么来的

我们看看,我们怎么样可以得到这个%20:

escape(" ")              "%20"
encodeURI(" ")           "%20"
encodeURIComponent(" ")  "%20"

其是字符的16进制格式值, 是百分号编码,之后会细说。

怎么获得这个编码,写一个简单的方法你就懂了

function to16Format(ch){
    return '%' + ch.codePointAt(0).toString(16)
}

to16Format(" ")  //  "%20"

虽然3个方法都能获得同样的值,
很少有人告诉你 esacpe是基于UTF-16,而另外两个是基于 UTF-8, 看个例子:

0-0xFF码点范围编码结果是一致的,
0xFF以上,结果就不一样了, 原理我们后面说。

escape("")         //%20
encodeURI("")      //%20

escape("人")       // "%u4EBA" 
encodeURI("人")    // "%E4%BA%BA"

escape("

标签:百分号,编码,UTF,字符,解构,escape,encodeURIComponent,encodeURI
From: https://www.cnblogs.com/cloud-/p/18095685

相关文章

  • 快速了解 变分自编码器 VAE
    概述变分自编码器(VariationalAuto-Encoders,VAE)是自编码器AE的变体,由Kingma等人于2014年提出的生成式网络结构。以概率的方式描述潜在空间,在数据生成方面潜力巨大。自编码器AE自编码器(Auto-Encoder,AE),是一种无监督式学习模型。它可以将输入\(X\)映射为数据量小得多的潜......
  • 大数据——增加行政区编码列
    importpandasaspdfromsqlalchemyimportcreate_engine#从数据库中读取结果表数据到DataFrame中engine=create_engine('mysql+pymysql://root:wwsa20030207@localhost/python_bigdata')result_df=pd.read_sql('SELECT*FROMresult_with_dimension',c......
  • 海量数据处理项目-阿里编码规范里面Manager分层介绍和开发规范说明
    ......
  • 浅谈位置编码(RoPE)(未完待续...)
    当前版本为本文的尝鲜版,稳定版尚未发布:位置编码:https://zhuanlan.zhihu.com/p/454482273transformer的sin位置编码本身已经包含了相对位置信息,本身就是一种包含相对信息的绝对位置编码。因为它符合一种形式:\[PE_{t+k}=f(k)\cdotPE(t)\]而这种编码一种比较尴尬的地方就在于,这......
  • export default无法被解构
    最近在做项目过程中,遇到一个问题,对一个UI组件,解构出我们需要的组件,进行注册,但是运行的时候报错了,写了一个小例子//user.jsexportdefault{obj:{name:1111},obj2:{name:22222},}//index.jsimport{obj,obj2}from"./user.js"console.log(obj,obj2)代码运行编译时候报错了......
  • 第13篇:4线-2线优先编码器
    Q:上一篇我们实现的4线-2线普通编码器在实际应用中会存在一个问题:如果中有2个或2个以上的取值同时为1,输出编码会出现混乱。本篇我们再来学习设计4线-2线优先编码器解决这个问题。A:基本原理:规定操作先后顺序,即优先级别。4个输入的优先级别的高低次序依次为、、、。优先编码器允......
  • Media Encoder 2024:未来媒体编码的新纪元 mac/win激活版
    随着科技的飞速发展,媒体内容已成为我们日常生活中不可或缺的一部分。为了满足用户对高质量视频内容不断增长的需求,MediaEncoder2024应运而生,它凭借卓越的技术和创新的特性,重塑了媒体编码的未来。→→↓↓载MediaEncoder2024mac/win版 MediaEncoder2024以其高效的编码......
  • CSCI 2122 C语言进行编码
    CSCI2122任务4截止日期:2024年3月22日星期五晚上11:59,通过git提交目标本作业的目的是练习用C语言进行编码,并强化课堂上讨论的程序表示概念。在这个任务1中,您将实现一个类似Rosetta3的二进制翻译器2。您的程序将从一个简单的指令集(比x86简单得多)转换为x86,并生成x86汇编代码。然......
  • 火星文:一种特殊的文字编码
    定义火星文是一种特殊的文字编码,也称为奇文,其特点是将常见的文字进行特殊的变体处理,使得原本的文字变得难以辨认,需要特定的解码方法才能阅读。火星文生成器|一个覆盖广泛主题工具的高效在线平台(amd794.com)https://amd794.com/huoxingwen历史火星文最早可以追溯到20世......
  • 20211102尹子扬DER编码
    二进制编码代码如下(只列举一个,其他类似)点击查看代码echo-n"CN"|od-tc-tx1创建一个der文件点击查看代码touch20211102.der按照要求编译文件点击查看代码echo-n-e"\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x4E">20211102.deropensslasn1pa......