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

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用document.write()输出换行的示例代码

    下面是JavaScript用document.write()输出换行的示例代码的完整攻略: 1. document.write()方法 document.write()是JavaScript中用于向HTML文档中输出内容的方法,我们可以使用它来向网页中动态添加内容。document.write()方法可以接受任何有效的HTML或JavaScript代码,系统…

    JavaScript 2023年5月28日
    00
  • 巧用局部变量提升javascript性能

    当JavaScript代码执行时,会先根据作用域中的变量、函数、以及this等信息,创造出执行上下文,并形成可用的作用域链,接着才会开始执行代码。局部变量的定义在这个过程中扮演着重要的角色,局部变量能够有效地提升JavaScript代码的性能。 局部变量提升 JavaScript代码执行时,会遇到变量和函数的声明,JavaScript会预处理变量和函数声明,…

    JavaScript 2023年6月10日
    00
  • 解决window.open()被浏览器拦截的问题

    当我们在网站中使用 window.open() 方法进行新窗口打开时,有时候会出现被浏览器拦截的情况,这是因为浏览器自身的安全机制会对一些具有潜在风险的弹窗进行拦截。 要解决这个问题,我们可以按照以下攻略进行操作: 第一种解决方法:禁用浏览器的弹窗拦截器 这种方法比较简单,只需要禁用浏览器的弹窗拦截器即可。以下给出了几种浏览器的设置方法: 1.1 Googl…

    JavaScript 2023年6月11日
    00
  • JS Ajax请求如何防止重复提交

    JS Ajax请求如何防止重复提交的攻略如下: 1. 基于状态锁的防重复提交 1.1 原理 基于状态锁的防重复提交原理是,在第一次请求(提交表单)时,将提交按钮禁用,等到本次请求成功后,再将提交按钮启用。期间再次点击提交按钮不产生任何反应,从而达到防止重复提交的目的。 1.2 代码示例 $(‘#form’).on(‘submit’, function(e) …

    JavaScript 2023年6月11日
    00
  • JavaScript代码应该放在HTML代码哪个位置比较好?

    当我们编写JavaScript代码时,应该考虑将其放在HTML中的哪个位置。这样可以提高网站性能、可维护性和可靠性。 一般来说,可以将JavaScript代码放在HTML文档的头部或尾部,或者在文档中间使用异步加载。下面分别介绍这三种放置JavaScript代码的方式。 1.头部 将JavaScript代码放在头部,可以确保所有代码都被下载和解释,但是可能会…

    JavaScript 2023年5月27日
    00
  • JavaScript实现动态网页飘落的雪花

    一、前言 在网页设计中,为了增加节日气氛或者美化页面,经常会配上一些漂亮的特效。其中,飘雪效果是比较常见的一个效果。本篇文章主要介绍JavaScript实现动态网页飘落的雪花的详细攻略。 二、基本思路 主要思路是使用setInterval()函数对页面中的每一个雪花进行计算、控制其位置以及更新其状态,并使用CSS和HTML控制每个雪花的样式以及雪花的总数。 …

    JavaScript 2023年6月10日
    00
  • JavaScript基于扩展String实现替换字符串中index处字符的方法

    要基于扩展String实现替换字符串中index处字符的方法,需要使用JavaScript原型链进行扩展。具体步骤如下: 利用Object.defineProperty()方法,为String.prototype对象添加一个名为replaceCharAtIndex的新属性。 Object.defineProperty(String.prototype, ‘r…

    JavaScript 2023年5月28日
    00
  • 深入学习JS XML和Fetch请求

    下面是关于”深入学习JS XML和Fetch请求”的详细攻略: 什么是XML XML是一种可扩展标记语言(eXtensible Markup Language),用于存储和传输数据。XML具有良好的可读性,易于在不同平台和编程语言之间进行数据交换。 XML的结构包含标签、属性和属性值等元素,以及文本、注释和空格等内容。 JS中的XML 在JavaScript…

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