计算机编码以及URL转码

news2024/10/23 0:46:14

目录

一、计算机编码

1.ASCII编码

2. GB2312编码

3.GBK编码

4.UTF-8编码

二、URL转码

1.encodeURI和decodeURI

2.encodeURIComponent 和 decodeURIComponent

三、Base64


一、计算机编码

在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则。

常见的编码方式有 :

ASCII编码、GB2312编码、GBK编码、UTF-8编码等。

这些编码方式各有特点,用于处理不同的字符集和数据类型,以满足不同的应用需求。计算机编码的基础在于将字符和数据转换成二进制0和1的序列,以便在计算机内部存储和处理。这种转换过程使得计算机能够理解和处理人类可读的文本信息,同时也允许不同设备和系统之间的数据交换和通信。

主要时间点:

下面介绍几种编码方式:

1.ASCII编码

ASCII (American Standard Code for Information Interchange):美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。

ASCII编码局限性:

在英语中,用128个符号编码便可以表示所有,但是用来表示其他语言,128个符号是不够的。比如汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。比如,简体中文常见的编码方式是 GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示 2562 = 65536 个符号 

2. GB2312编码

1980 年,中国发布了第一个汉字编码标准,也即 GB2312 ,全称 《信息交换用汉字编码字符集·基本集》,通常简称 GB (“国标”汉语拼音首字母)。

GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312。

基本集共收入汉字6763个和非汉字图形字符682个。整个字符集分成94个区,每区有94个位。每个区位上只有一个字符,因此可用所在的区和位来对汉字进行编码,称为区位码。

把换算成十六进制的区位码加上2020H,就得到国标码。国标码加上8080H,就得到常用的计算机机内码。1995年又颁布了《汉字编码扩展规范》(GBK)。GBK与GB/T 2312-1980国家标准所对应的内码标准兼容,同时在字汇一级支持ISO/IEC10646—1和GB 13000—1的全部中、日、韩(CJK)汉字,共计20902字。

3.GBK编码

GBK编码,是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK编码方案于1995年10月制定, 1995年12月正式发布,中文版的WIN95、WIN98、WINDOWS  NT以及WINDOWS 2000、WINDOWS XP、WIN 7等都支持GBK编码方案。

4.UTF-8编码

UTF-8是一种变长字节表示的Unicode字符编码,它使用1到4个字节来表示Unicode字符。以下是UTF-8编码的一些关键特点:

  • 对于基本ASCII字符(码点从U+0000到U+007F),UTF-8编码与ASCII编码兼容,每个字符使用1个字节表示。
  • 对于拉丁文、希腊文、等带有变音符号的字符(码点从U+0080到U+07FF),UTF-8编码使用2个字节表示。
  • 对于其他语言的字符,包括中日韩文字等(码点超过U+07FF),UTF-8编码使用3个字节表示。
  • 对于一些极少使用的语言字符,UTF-8编码使用4个字节表示。

UTF-8编码的规则相对简单,通过查看字节的最高位,可以确定字符的编码长度。例如,如果字节的最高位是0,则该字符使用1个字节;如果最高位是110,则使用2个字节;如果最高位是1110,则使用3个字节;如果最高位是11110,则使用4个字节。这种变长编码方式使得UTF-8能够高效地表示Unicode字符集,同时保持与ASCII编码的兼容性。

Unicode,统一码也叫万国码、单一码,由统一码联盟开发,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。统一码是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

二、URL转码

URL转码是将字符串转换为适合在URL中传输的形式的过程,它涉及到将某些特殊字符转换为对应的编码形式,以确保URL的正确解析和传输。有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。

前端URL转码使用方式:

1.encodeURI和decodeURI

let url = 'http://127.0.0.1:8080/userInfo?age=5000&name=孙悟空';

//转码,进行传输
let currentUrl = encodeURI(url);
console.log(currentUrl);

//解码,获得原链接
let thisUrl = encodeURI(currentUrl)
console.log(thisUrl );

encodeURI也是有局限的,它有一些常见的字符还是无法做到有效转码。使用了encodeURI转码,而&这类字符没有有效转码,没有达到我们想要的效果。

2.encodeURIComponent 和 decodeURIComponent

encodeURIComponent ,它可以将; / ? : @ & = + $ , #等这类特殊字符进行转码。所以用这种方式。

let url = 'http://127.0.0.1:8080/userInfo?age=5000&name=孙悟空';

//转码,进行传输
let currentUrl = encodeURIComponent(url);
console.log(currentUrl);

//解码,获得原链接
let thisUrl = decodeURIComponent(currentUrl)
console.log(thisUrl );

三、Base64

Base64是一种用64个字符来表示任意二进制数据的方法。

用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法,那么Base64是一种最常见的二进制编码方法。

Base64 常用于表示、传输、存储二进制数据,也可以用于将一些含有特殊字符的文本内容编码,以便传输。

标准 Base64 里的 64 个可打印字符是 A-Za-z0-9+/,分别依次对应索引值 0-63。

编码流程: 先对图片进行 utf-8 编码 生成 二进制,然后 base64 再对 二进制进行编码,生成 base64 字符串。

解码流程: 先对 base64字符串 解码 生成 二进制,然后使用 utf-8 解码生成图片。

前端使用方式:

首先npm下载:

npm i js-base64

代码中引入使用:

import { Base64 } from "js-base64";

let url = 'http://127.0.0.1:8080/userInfo?age=5000&name=孙悟空';

//编码
let currentUrl = Base64.encode(url);
console.log(currentUrl)

//解码
let thisUrl = Base64.decode(currentUrl);
console.log(thisUrl)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1844175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源驰骋低代码-积极拥抱AI时代

开源驰骋AI低代码-积极拥抱AI时代 驰骋AI代码开发平台ccfast通过集成人工智能技术,为开发者提供了一系列强大的辅助功能,极大地提升了开发效率和流程体验。以下是针对您列出的功能的详细解释: 概要说明 驰骋低代码开发平台是一款基于云计算和…

【人工智能,机器学习,统计学习,科学表征】开源商用与研发合作

个体工户linjing-lab托管在Github,现公开招募商用与合作人员,目标人群分为以下几个方向: 数学、信息科学、计算机专业的大学高年级学生,熟悉C和面向对象模型,擅长Pybind11编译算子到Python环境。26岁以下的大学本科毕…

Java学习 (四) 面向对象--类与方法

关于面向对象的知识点 1、 java类 以及类成员 属性 方法 构造器 代码块 内部类 2、面向对象特征 封装 继承 多态 3、 其他关键字使用 this \ super \ package \ import \static \ final\ interface\ abstract …

北方高温来袭!动力煤却不涨反跌的原因分析

内容提要 北方高温而南方降雨偏多的格局或将继续,整体水力发电量增长可能继续明显增长,但火电增幅可能继续缩小。5月重点火电厂的发电量和耗煤量增速均呈现负增长,耗煤量月度同比下降7%,而重点水电同比大增近40%。我国电力行业绿…

Apple Phone Memory

Apple Phone Memory 苹果手机内存查询,哪些应用程序(app)占用内存: 设置 通用 iPhone储存空间 清理下QQ音乐:

灵感互娱U3D笔试题

文章目录 题目1解析 题目2解析 题目3解析 题目4数组链表 题目5解析 题目6解析 题目7解析题目8解析 后话 题目1 以下C#代码的输出顺序是什么 namespace ConsoleApp2 {internal class Program{class A{ public A(string text){Console.WriteLine(text);}}class B{static A a1 …

同城跑腿多合一系统源码小程序支持安卓+IOS+公众号+H5

🚀 同城跑腿多合一小程序:便捷生活新选择 💨 一、引言:走进便捷新纪元 在这个快节奏的现代生活中,时间成了最宝贵的财富。而“同城跑腿多合一小程序”正是为了满足大家对于便捷、高效生活的追求而诞生的。它不仅是一款…

高效设计必选!5款好用的UI动效工具

UI 动态设计是应用程序设计的重要组成部分。随着技术的积累,UI设计中的动态效果遍地开花,UI动态效果可以使我们的页面更时尚、更有趣、更人性化。5G网络的快速发展也使美丽的动态效果几乎无缝地嵌入到UI界面中。今天,毫不夸张地说&#xff0c…

豆瓣电影top250网页爬虫

设计思路 选择技术栈:确定使用Python及其相关库,如requests用于发送网络请求,获取网址,用re(正则表达式)或BeautifulSoup用于页面内容解析。设计流程:规划爬虫的基本流程,包括发起请求、接受响应、解析内容、存储数据等环节。模块…

CCF推荐会议必投攻略:这些顶级会议投完直通录取大门

CCF推荐会议必投攻略:这些顶级会议投完直通录取大门! 会议之眼 快讯 CCF介绍 CCF(China Computer Federation)即中国计算机学会,前身是中国电子学会计算机专业委员会,成立于1962年。这是由从事计算机及相…

容器基本概念_从虚拟化技术_到容器化技术_开通青云服务器_并远程连接_容器安装---分布式云原生部署架构搭建007

这一部分,属于以前都会用到的,会快速过一遍,对于关键技术问题会加以说明 https://www.yuque.com/leifengyang/oncloud文档地址在这里,可以看,有些命令可以复制使用 可以看到容器的出现就是 目的就是,让你做的所有的软件,都可以一键部署启动 打包就是docker build 然后: 对于…

Github生成Personal access tokens及在git中使用

目录 生成Token 使用Token-手工修改 使用Token-自动 生成Token 登录GitHub,在GitHub右上角点击个人资料头像,点击Settings → Developer Settings → Personal access tokens (classic)。 在界面上选择点击【Generate new token】,填写如…

ctfshow web七夕杯

web签到 执行命令没有回显&#xff0c;我们直接写文件就可以了 有字符长度限制 ls />a nl /*>a访问url/api/a下载文件 easy_calc <?phpif(check($code)){eval($result."$code".";");echo($result); }function check(&$code){$num1…

Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建

Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建 软件版本一、软件安装1、Python安装2、Pycharm安装3、pyside6或pyqt6安装①安装pyside6②安装PyQt6和pyqt6-tools二、Pycharm项目配置1、插件安装2、新建项目以及环境配置3、包管理安装三、在Pycharm中配置PySide61、pyside6 Qt…

Redis持久化主从哨兵分片集群

文章目录 1. 单点Redis的问题数据丢失问题并发能力问题故障恢复问题存储能力问题 2. Redis持久化 -> 数据丢失问题RDB持久化linux单机安装Redis步骤RDB持久化与恢复示例RDB机制RDB配置示例RDB的fork原理总结 AOF持久化AOF配置示例AOF文件重写RDB与AOF对比 3. Redis主从 ->…

C/C++ struct stat介绍

目录 前言 struct stat struct stat 使用 参考 共勉 前言 本文详细介绍了stat结构体的成员变量&#xff0c;以及使用案例&#xff0c;希望能够帮到您。 struct stat struct stat 结构体用于表示文件或者文件系统对象信息的一种结构体的声明&#xff0c;通常在POSIX&#x…

Gobject tutorial 八

The GObject base class Object memory management Gobject的内存管理相关的API很复杂&#xff0c;但其目标是提供一个基于引用计数的灵活的内存管理模式。 下面我们来介绍一下&#xff0c;与管理引用计数相关的函数。 Reference Count 函数g_object_ref和g_object_unref的…

基于JSP的个人交友网站系统

开头语&#xff1a; 你好&#xff0c;我是计算机学长猫哥。在这个信息时代&#xff0c;个人交友网站为我们提供了一个便捷的社交平台。如果你对本系统感兴趣或有更多需求&#xff0c;欢迎联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技…

多线程(Lock锁,死锁,等待唤醒机制,阻塞队列,线程池)

Lock锁 虽然我们可以理解同步代码块和同步方法的锁对象问题但是我们并没有直接看到在哪里加上了锁&#xff0c;在哪里释放了锁为了更清晰的表达如何加锁和释放锁&#xff0c;JDK5以后提供了一个新的锁对象Lock Lock实现提供比使用synchronized方法和语句可以获得更广泛的锁定操…

网络编程(七)网络超时检测

文章目录 一、概念二、实现方式&#xff08;一&#xff09; 使用select实现超时检测1. select函数补充说明&#xff1a;2. 使用示例3. 输出结果 &#xff08;二&#xff09; 使用setsockopt函数1. 函数定义2. 获取发送缓冲区和接收缓冲区的大小3. 端口复用4. 设置超时时间 &…