JavaScript、C# URL编码、解码总结

yizhihongxing

JavaScript、C# URL编码、解码总结

在进行URL传输时,为了防止特殊字符导致的错误,需要对URL进行编码。JavaScript和C#都提供了URL编码、解码的方法。

JavaScript URL编码、解码

在JavaScript中,可以使用encodeURIencodeURIComponent对URL进行编码,使用decodeURIdecodeURIComponent对URL进行解码。

encodeURI编码

encodeURI可以用来对整个URL进行编码,但只会对URI中的特殊字符进行编码,保留一些特殊字符,如;,/?:@&=+$#等。

const url = "https://www.example.com/search?q=JavaScript编码";
const encodedUrl = encodeURI(url);
console.log(encodedUrl); // https://www.example.com/search?q=JavaScript%E7%BC%96%E7%A0%81

encodeURIComponent编码

encodeURIComponent则可以用来编码URI中的所有特殊字符,包括;,/?:@&=+$#等。

const url = "https://www.example.com/search?q=JavaScript编码";
const encodedUrl = encodeURIComponent(url);
console.log(encodedUrl); // https%3A%2F%2Fwww.example.com%2Fsearch%3Fq%3DJavaScript%E7%BC%96%E7%A0%81

decodeURI解码

decodeURI可以用来对整个URL进行解码,与encodeURI对应。

const encodedUrl = "https://www.example.com/search?q=JavaScript%E7%BC%96%E7%A0%81";
const url = decodeURI(encodedUrl);
console.log(url); // https://www.example.com/search?q=JavaScript编码

decodeURIComponent解码

decodeURIComponent则可以用来解码URI中的所有特殊字符。

const encodedUrl = "https%3A%2F%2Fwww.example.com%2Fsearch%3Fq%3DJavaScript%E7%BC%96%E7%A0%81";
const url = decodeURIComponent(encodedUrl);
console.log(url); // https://www.example.com/search?q=JavaScript编码

C# URL编码、解码

在C#中,可以使用HttpUtility.UrlEncodeHttpUtility.UrlDecode对URL进行编码、解码。

HttpUtility.UrlEncode编码

HttpUtility.UrlEncode可以用来对整个URL进行编码,会对所有特殊字符进行编码,包括;,/?:@&=+$#等。

string url = "https://www.example.com/search?q=JavaScript编码";
string encodedUrl = HttpUtility.UrlEncode(url);
Console.WriteLine(encodedUrl); // https%3a%2f%2fwww.example.com%2fsearch%3fq%3dJavaScript%e7%bc%96%e7%a0%81

HttpUtility.UrlDecode解码

HttpUtility.UrlDecode可以用来对整个URL进行解码,与HttpUtility.UrlEncode对应。

string encodedUrl = "https%3a%2f%2fwww.example.com%2fsearch%3fq%3dJavaScript%e7%bc%96%e7%a0%81";
string url = HttpUtility.UrlDecode(encodedUrl);
Console.WriteLine(url); // https://www.example.com/search?q=JavaScript编码

示例

在一个网页中,用户可以输入一个URL进行页面跳转。为了防止输入的URL中包含特殊字符而导致跳转错误,我们可以使用JavaScript的encodeURIComponent对URL进行编码,然后通过POST请求将编码后的URL发送到后端。

<form action="/redirect" method="POST">
  <label for="url-input">请输入跳转的URL:</label>
  <input type="text" name="url" id="url-input">
  <button type="submit">跳转</button>
</form>

<script>
  const urlInput = document.querySelector('#url-input');

  document.querySelector('form').addEventListener('submit', (event) => {
    event.preventDefault(); // 阻止表单默认提交行为
    const encodedUrl = encodeURIComponent(urlInput.value);
    fetch('/redirect', {
      method: 'POST',
      body: JSON.stringify({
        url: encodedUrl
      }),
      headers: {
        'Content-Type': 'application/json'
      }
    })
      .then(response => response.json())
      .then(data => {
        if (data.success) {
          window.location.href = data.redirectUrl;
        } else {
          alert('跳转失败');
        }
      });
  });
</script>

后端代码(使用C#)可以先获取POST请求中的编码后的URL,然后通过HttpUtility.UrlDecode解码,最后进行跳转。

public ActionResult Redirect()
{
  string encodedUrl = Request.Form["url"];
  string decodedUrl = HttpUtility.UrlDecode(encodedUrl);
  return Redirect(decodedUrl);
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript、C# URL编码、解码总结 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • JavaScript实现数组降维详解

    现在我会详细讲解一下“JavaScript实现数组降维详解”的完整攻略,过程中将包含两个示例。 什么是数组降维? 在 JavaScript 中,一个数组可能会包含多个层级,这时候我们可能需要将这个多维数组转换为一维数组,这个过程就被称为数组降维。 实现数组降维 在 JavaScript 语言中,我们可以使用一些方法来实现数组降维。 方法一:使用 flat()…

    JavaScript 2023年5月27日
    00
  • js实现特别简单的钟表效果

    当开发一个网站时,增加一个钟表效果可以有效地增加用户的交互性和娱乐性。在JavaScript中实现一个钟表的效果十分简单。我们可以通过JavaScript调用内置的Date对象来获取当前时间,并通过一些数学计算将其转化为时针、分针和秒针的指针位置。以下是实现这个效果的步骤: 1. HTML结构 首先,我们需要在页面中添加一个标记,我使用div来存放我的时钟。…

    JavaScript 2023年5月27日
    00
  • HTML5安全风险之Web Worker攻击详解

    HTML5安全风险之Web Worker攻击详解 什么是Web Worker? Web Worker是HTML5新增的一个功能,可以在后台线程中执行JavaScript脚本,而不会阻塞UI线程。Web Worker的主要应用场景是处理一些耗时的计算任务,如数据处理、图像处理等。 Web Worker的基本用法 在主线程中创建Web Worker对象: var…

    JavaScript 2023年5月28日
    00
  • 微信小程序模拟cookie的实现

    让我来详细讲解“微信小程序模拟cookie的实现”的完整攻略。 1. 什么是cookie? 在介绍如何模拟cookie前,我们先来了解一下什么是cookie。简单来说,cookie是一种用于保存在客户端浏览器中的小型文本文件,其主要作用是记录一些用户的访问信息,并在下一次用户访问时读取这些信息。 2. 微信小程序中如何模拟cookie? 由于微信小程序的沙箱…

    JavaScript 2023年6月11日
    00
  • JavaScript显示当然日期和时间即年月日星期和时间

    想要在网页上显示当前日期和时间,可以使用JavaScript编写代码实现。下面是详细的攻略: 步骤一:获取当前时间 使用JavaScript中的Date对象的get方法可以获取当前时间的各个部分,包括年份、月份、日期、小时、分钟、秒和毫秒。其中,getDay方法可以获取星期几,0表示星期日,1表示星期一,以此类推。下面是获取当前时间的代码: var date…

    JavaScript 2023年5月27日
    00
  • JavaScript常见JSON操作实例分析

    JavaScript常见JSON操作实例分析 本篇文章将介绍JavaScript中常用的JSON操作,包括JSON对象的创建、解析、修改等操作,并提供了多个实例来说明这些操作的使用场景。 JSON对象的创建 使用JavaScript中的JSON对象可以方便地创建和操作JSON格式的数据。要创建JSON对象,可以使用JSON.parse()函数解析一个包含JS…

    JavaScript 2023年6月10日
    00
  • Javascript Global eval() 函数

    以下是关于JavaScript Global对象中eval()函数的完整攻略,包括两个示例说明。 JavaScript Global对象中的eval()函数 JavaScript Global对象中的eval()函数用于将一个字符串作为JavaScript代码进行执行。eval()函数可以将一个字符串解析为JavaScript代码,并执行该代码。eval()…

    JavaScript 2023年5月11日
    00
  • Jil,高效的json序列化和反序列化库

    Jil是一个高效的Json序列化和反序列化库,完全基于C#实现。它被设计为尽可能快地进行序列化、反序列化操作,同时也是安全和灵活的。 安装 你可以从NuGet库中安装Jil:通过Package Manager控制台输入命令”Install-Package Jil”或者在Visual Studio中选择“项目” -> “管理NuGet软件包”,在搜索框中…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部