【C#】知识点实践序列之UrlEncode在线URL网址编码、解码

欢迎来到《小5讲堂》,大家好,我是全栈小5。
这是2024年第8篇文章,此篇文章是C#知识点实践序列文章,
博主能力有限,理解水平有限,若有不对之处望指正!
地址编码大家应该比较经常遇到和使用到,一起来看看是如何编码和解码的吧!

在这里插入图片描述

目录

  • 前言
  • 基本信息
    • 编码场景
  • 地址编码解码
    • 地址编码
      • 效果
      • 代码
    • 地址解码
      • 效果
      • 代码
  • 疑问解答

在这里插入图片描述

前言

对接过接口的小伙伴应该对地址编码不陌生,对于我们刚接触时,心中都有疑问,为什么要编码,直接原样字符串传递不可以吗?
我们带着这个疑问,一步步来解开谜团!

基本信息

C#中的地址编码和地址解码通常用于处理 URL 中的特殊字符,以确保 URL 的正确性和安全性。这种编码/解码操作可以使用
UrlEncode 和 UrlDecode 方法来完成。比如空格和问号。

编码场景

比如:C站下面的文本搜索区域,当我们输入文本搜索时,地址栏就会自动把特殊符号进行了编码
原始文本:C# URL编码?和解码&
编码文本:C%23%20URL编码%3F和解码%26
从下面,我们可以知道,#井号、空格、?问号、&和符号均被自动进行了编码
&这个和符号被编码的目的很简单,因为地址栏的&和符号是用来分隔参数,所以不能原样显示,否则可能会出现,就达不到参数值的正确性了
在这里插入图片描述

地址编码解码

地址编码

从上面基本信息我们可以知道,对地址编码主要是为了正确性和安全性,一般地址参数都是用问号后面的来标识,所以地址参数有问号就需要特殊处理。
这里需要注意的是,地址编码是指针对问号后面的参数进行编码,而不是全地址进行编号,否则就无法发起http请求了。

效果

  • 没有进行地址参数处理,就会出现下面全地址编码,这个是不对的
    在这里插入图片描述
  • 地址参数编码
    在这里插入图片描述

代码

string urlText = "https://so.csdn.net/so/search?spm=1001.2227.3001.4498&q=C# URL编码?和解码&&t=&u=";
string urlValue = urlText.Split('?')[0];
string urlParam = urlText.Split('?')[1];
string urlNew = $"{urlValue}?{System.Web.HttpUtility.UrlEncode(urlParam)}";
textBox2.Text = urlNew;

地址解码

在 C# 中,地址解码是将经过地址编码的字符串还原为原始字符串的过程。
常用的地址解码方法是 HttpUtility.UrlDecode,该方法在 System.Web 命名空间中定义。

效果

在这里插入图片描述

代码

string url = "https://so.csdn.net/so/search?spm%3d1001.2227.3001.4498%26q%3dC%23+URL%e7%bc%96%e7%a0%81";
string urlNew = System.Web.HttpUtility.UrlDecode(url);
textBox2.Text = urlNew;

疑问解答

如果在 C# 中不进行地址编码,可能会出现以下问题:

1.URI 格式错误
特殊字符(如空格、问号、等号等)在 URI 中有特定的含义,如果不经过编码直接使用,可能会导致 URI 格式错误,无法正确解析和处理。
2.安全问题
在构造包含用户输入的 URI 时,如果不对用户输入的特殊字符进行编码,可能会导致安全问题。例如,恶意用户可能通过在 URI 中插入恶意代码或注入攻击来获取未经授权的数据或执行非法操作。
3.数据丢失或错误
某些字符在 URI 中可能会被服务器或其他中间件解析或处理时误解。在进行传输或处理过程中,这些字符可能被修改或丢失,导致 URI 不符合预期。
4.兼容性问题
不同的服务器或客户端可能对特殊字符的处理方式有所不同。如果不进行地址编码,可能会导致不同环境下的兼容性问题,影响系统的通用性和可移植性。

总结:温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

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

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

相关文章

CAN数据记录仪在新能源车上的应用

随着新能源汽车的快速发展,对车辆安全和性能的要求也越来越高。在新能源车中,液位传感器是必不可少的零部件之一,用于监测电池液位、冷却液位等关键参数。在测试阶段需要工作人员花费大量时间跟车去获取它的CAN数据,从而分析是否有…

RabbitMQ消息队列安装配置及常用交换机

首先使用Rabbitmq需要安装Rabbitmq中间件,然后添加使用springRabbitmq整合Rabbitmq添加maven依赖包,配置相关配置信息。 rabbitmq中间件安装在liunx服务器上容器中 docker load -i mq.tar 生成镜像。将镜像加载到容器中运行 docker run \ -e RABBITMQ_DEFAULT_USER=m…

在 Linux 中开启 Flask 项目持续运行

在 Linux 中开启 Flask 项目持续运行 在部署 Flask 项目时,情况往往并不是那么理想。默认情况下,关闭 SSH 终端后,Flask 服务就停止了。这时,您需要找到一种方法在 Linux 服务器上实现持续运行 Flask 项目,并在服务器…

Dependency Dialogue Acts — Annotation Scheme and Case Study [论文解读]

原文链接:https://arxiv.org/pdf/2302.12944.pdf 摘要 在本文中,我们介绍了依存对话行为(Dependency Dialog Act, DDA),这是一个新颖的框架,旨在捕捉多方对话中说话者意图的结构。DDA结合并适应了现有对话标注框架的特点&#x…

springboot实现OCR

1、引入依赖 <dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.5.4</version> </dependency> 2、config Configuration public class TessOcrConfiguration {Beanpublic …

第6章-第4节-Java中的Date类

1、日期类 侧重点&#xff1a;年、月、日、时、分、秒 类型&#xff1a; java.util.Date类 常用构造方法&#xff1a; Date()&#xff1a;分配 Date 对象并初始化此对象&#xff0c;以表示分配它的时间&#xff08;精确到毫秒&#xff09;。 Date(long date)&#xff1a;…

旋转图像(LeetCode 48)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路参考文献 1.问题描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在「原地」旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示…

【网关】网关详解-IP、子网掩码、网关、云开发、微服务网关

一、网关简介 在计算机网络中&#xff0c;网关&#xff08;Gateway&#xff09;是连接两个不同网络的设备或软件。它充当了连接这两个网络的“门户”&#xff0c;使得数据能够在它们之间传递。让我们用一个通俗易懂的比喻来理解网关的作用&#xff1a; 想象一座城市中有两个不…

SpringBoot连接MySQL并整合MyBatis-Plus

SpringBoot连接MySQL并整合MyBatis-Plus 配置springboot版本目录结构pom.xml文件application.yml数据库表代码Test.javaTestMapper.javaTestMapper.xmlTestService.javaTestServiceImpl.javaTestController.java效果配置 springboot版本 <parent><groupId>org.sp…

linux中ldconfig的使用介绍

ldconfig是一个动态链接库管理命令&#xff0c;其目的为了让动态链接库为系统所共享。 ldconfig的主要用途&#xff1a; 默认搜寻/lilb和/usr/lib&#xff0c;以及配置文件/etc/ld.so.conf内所列的目录下的库文件。搜索出可共享的动态链接库&#xff0c;库文件的格式为&#…

git提交操作(不包含初始化仓库)

1.进入到本地的git仓库 查看状态 git status 如果你之前有没有成功的提交&#xff0c;直接看第5步。 2.追踪文件 git add . 不要提交大于100M的文件&#xff0c;如果有&#xff0c;看第5步 3.提交评论 git commit -m "你想添加的评论" 4.push (push之前可以再…

2024.1.4每日一题

LeetCode每日一题 2397.被列覆盖的最多行数 2397. 被列覆盖的最多行数 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个下标从 0 开始、大小为 m x n 的二进制矩阵 matrix &#xff1b;另给你一个整数 numSelect&#xff0c;表示你必须从 matrix 中选择的 不同 …

回首2023年,外贸行业发生了哪些大事,2024年应该如何做

莎士比亚说过&#xff1a;凡是过往,皆为序章,凡是未来,皆有可期。 2023年发生过太多的事情了&#xff0c;今天就来给大家回顾一下2023年外贸行业发生的一些事情&#xff0c;下面我会用一些关键词来概况。当然如同莎士比亚说的那样&#xff0c;回首过去是为了更好的选择未来。 …

YOLO算法入门指南:了解门槛、学习路径及其易学性

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通Golang》…

【ModelScope】部署一个属于自己的AI服务

前言 技术栈是Fastapi。 FastAPI 是一个现代、快速&#xff08;基于 Starlette 和 Pydantic&#xff09;、易于使用的 Python web 框架&#xff0c;主要用于构建 RESTful API。以下是 FastAPI 的一些优势&#xff1a; 性能卓越&#xff1a; FastAPI 基于 Starlette 框架&…

Java程序设计——GUI设计

一、目的 通过用户图形界面设计&#xff0c;掌握JavaSwing开发的基本方法。 二、实验内容与设计思想 实验内容&#xff1a; 课本验证实验&#xff1a; Example10_6 图 1 Example10_7 图 2 图 3 Example10_15 图 4 设计思想&#xff1a; ①学生信息管理系统&#xff1a…

万界星空科技低代码平台:制造业数字化转型的捷径

低代码MES系统&#xff1a;制造业数字化转型的捷径 随着制造业的数字化转型&#xff0c;企业对生产管理系统的需求逐渐提高。传统的MES系统实施过程复杂、成本高昂&#xff0c;已经无法满足现代企业的快速发展需求。而低代码搭建MES系统的出现&#xff0c;为企业提供了一种高…

船舶数据采集与分析在线能源监测解决方案

一、船舶在线能源监测应用前景 船舶在线能源监测在能源效率优化、故障诊断和预测维护、节能减排和环保监管、数据分析和决策支持以及自动化智能化等方面具有广阔的应用前景。随着船舶行业对能源管理和环保要求的不断提高&#xff0c;船舶在线能源监测技术将成为船舶运营和管理中…

Linux系统:进程和计划任务管理

目录 一、程序 二、进程 1、什么是进程 1.1 进程的概念 1.2 进程的特征 1.3 进程、线程和协程 2、进程状态 3、进程的类型 4、进程使用内存出现的问题 三、进程管理相关命令 1、ps&#xff08;process state&#xff09; 1.1 用法 1.2 分析ps命令输出的内容 2、t…

LLM 中的长文本问题

近期,随着大模型技术的发展,长文本问题逐渐成为热门且关键的问题,不妨简单梳理一下近期出现的典型的长文本模型: 10 月上旬,Moonshot AI 的 Kimi Chat 问世,这是首个支持 20 万汉字输入的智能助手产品; 10 月下旬,百川智能发布 Baichuan2-192K 长窗口大模型,相当于一次…