js 转义字符及URI编码详解

JS 转义字符及 URI 编码详解

在 JavaScript 编程中,我们经常需要对一些字符进行编码或转义,以确保它们能够被正确地处理和显示。同时,对于某些需要作为 URL 参数传递的字符,也需要使用 URI 编码进行处理。本攻略将就这两个问题进行详细的讲解。

转义字符

在 JavaScript 中,我们可以通过使用转义字符来表示一些特定的字符。下表列出了一些常用的转义字符及其对应的字符意义:

转义字符 含义
\n 换行符
\r 回车符
\t 制表符
\/ 斜杠(/)
\\" 双引号(")
\' 单引号(')
\uXXXX Unicode 码点为 XXXX 的字符

例如,如果我们想要表示一个双引号字符("),就需要使用 \" 的方式进行转义。示例如下:

var str = "这是一个\"双引号\"字符。";
console.log(str);
// 输出:<这是一个"双引号"字符。>

URI 编码

URI(Uniform Resource Identifier),统一资源标识符,是一种用来标识某一互联网资源的字符串表示方法。在将某些字符作为 URL 参数时,需要使用 URI 编码将其进行替换,以防止出现一些问题。下表列出了需要进行 URI 编码的一些特殊字符:

字符 含义 编码方式
! 惊叹号 %21
# 井号 %23
$ 美元符号 %24
& 与符号(连接多个参数) %26
' 单引号 %27
( 左括号 %28
) 右括号 %29
* 星号 %2A
+ 加号 %2B
, 逗号 %2C
/ 斜杠 %2F
: 冒号 %3A
; 分号 %3B
= 等号 %3D
? 问号 %3F
@ 艾特符号(邮箱) %40
% 百分号 %25
空格 空格字符 %20
其他 其他字符的 Unicode 码 %HH

其中,“%HH”表示该字符的 Unicode 编码的十六进制数值。例如,字符“中”的 Unicode 码为 U+4E2D,它的十六进制数值为 4E2D,所以在 URL 参数中需要使用 %4E2D 代替。

在 JavaScript 中,我们可以使用 encodeURIComponent() 函数对一个字符串进行 URI 编码。例如:

var str = "这是一段需要进行 URI 编码的字符:$&+,:;=?@#%";
var encodedStr = encodeURIComponent(str);
console.log(encodedStr);
// 输出:<这是一段需要进行 URI 编码的字符%EF%BF%BD%26%2B%2C%3A%3B%3D%3F%40%23%25>

需要注意的是,对于一些在 URL 中具有特殊含义的字符,例如“/”、“?”等,我们在进行 URI 编码时需要将它们保留,否则 URL 很可能无法正确解析。此外,在解析 URL 参数时,我们也需要对编码过的字符串进行解码,可以使用 decodeURIComponent() 函数进行解码。

示例

示例1:对 URL 中的参数进行编码

假设我们要向某个页面传递两个参数,分别是“姓名”和“年龄”,我们可以使用以下的方式进行 URL 拼接:

var name = "张三";
var age = 20;
var url = "http://example.com/page.html?name=" + name + "&age=" + age;

但是,在这种方式中,如果姓名包含空格或其他特殊字符,或者年龄不是一个数字,那么 URL 就不能正确解析。所以,我们需要使用 URI 编码对参数进行处理:

var name = "张 三";
var age = "20岁";
var encodedName = encodeURIComponent(name);
var encodedAge = encodeURIComponent(age);
var url = "http://example.com/page.html?name=" + encodedName + "&age=" + encodedAge;

这样,URL 就会变成:

http://example.com/page.html?name=%E5%BC%A0%20%E4%B8%89&age=20%E5%B2%81

示例2:将本地文件转换为 base64 编码

有时候,我们需要将本地的文件内容进行编码,并以字符串形式传递给后端。这时,我们可以使用 FileReader 对象来读取文件,并使用 btoa() 函数将内容进行 base64 编码,例如:

var fileInput = document.getElementById("fileInput");
var reader = new FileReader();
reader.onload = function(e) {
  var base64Str = btoa(e.target.result);
  console.log(base64Str);
};
reader.readAsBinaryString(fileInput.files[0]);

在这个例子中,我们首先通过 HTML 表单中的“file”类型 input 获取了用户选择的文件,然后使用 FileReader 对象读取文件的内容(这里使用了 readAsBinaryString() 方法),并在读取成功后将内容进行 base64 编码,最终输出编码后的字符串。这个字符串可以在后续的 HTTP 请求中作为参数发送给服务器端。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js 转义字符及URI编码详解 - Python技术站

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

相关文章

  • FireFox JavaScript全局Event对象

    FireFox JavaScript全局Event对象 概述 在 FireFox JavaScript 中,Event 对象是一个全局的对象,它代表着一个事件,包含了事件的相关信息,如事件类型,目标元素等。我们可以使用 Event 对象来获取事件信息。 使用方法 获取事件类型 在事件处理函数中,我们可以使用 event.type 属性来获取事件的类型,例如:…

    JavaScript 2023年6月10日
    00
  • js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换&#XX的函数代码

    下面是详细的攻略。 js中文汉字转Unicode 在 js 中,可以使用以下代码将中文汉字转换为 Unicode 码: function chineseToUnicode(str) { var res = []; for (var i = 0; i < str.length; i++) { res[i] = ("00" + str.…

    JavaScript 2023年6月1日
    00
  • javascript 补零 函数集合

    标题: JavaScript 补零 函数集合 介绍:在 JavaScript 中,有时候我们需要对数字进行处理,让它们保持一定的长度,并在前面添加 “0” (零) ,这时候就需要用到补零函数。本文将详细讲解 JavaScript 补零 函数集合和应用场景。 函数列表 函数一:补零函数补充 函数二:转化成固定长度字符串函数 函数三:Date 对象转化成指定格式…

    JavaScript 2023年5月27日
    00
  • 在web worker中使用fetch实例详解

    下面是针对“在web worker中使用fetch实例详解”的完整攻略: 什么是Web Worker Web Worker是一项Web技术,它是一种能够让JavaScript代码在浏览器后台运行的机制。通过Web Worker,可以让一部分长时间运行的JavaScript代码运行在单独的线程中,而不会阻塞UI线程的运行,从而提高了JavaScript的执行效…

    JavaScript 2023年5月28日
    00
  • python的pip有什么用

    下面是关于“Python的pip有什么用”的详细攻略: 1. 什么是pip pip是Python语言中一个非常常用的包管理工具,用于安装和管理Python的第三方库。它可以自动下载、安装和更新Python库,大大方便了开发者的工作。pip已经是Python3.4及以后版本的标准库之一,不需要额外安装。 2. pip的使用 安装pip 如果你使用的Python…

    JavaScript 2023年5月28日
    00
  • 实现JavaScript中继承的三种方式

    实现JavaScript中继承的三种方式包括:原型链继承、构造函数继承和组合继承。 1. 原型链继承 原型链继承是通过将子类的原型指向父类实例来实现继承的。代码示例如下: // 父类 function Person(name) { this.name = name; } Person.prototype.sayHello = function() { con…

    JavaScript 2023年5月27日
    00
  • Cookies 和 Session的详解及区别

    我来详细讲解一下“Cookies 和 Session的详解及区别”。 Cookies 和 Session的概述 Cookies:保存在客户端,并且数据较为小巧,可以通过浏览器修改; Session:保存在服务端,因此不太容易被攻击,并且能够存储较为敏感的用户信息。 Cookies和Session的使用 Cookies的使用 Cookies的使用主要有以下几个…

    JavaScript 2023年6月11日
    00
  • 详解微信小程序开发聊天室—实时聊天,支持图片预览

    详解微信小程序开发聊天室——实时聊天,支持图片预览 背景 微信小程序是一种轻巧的应用程序,用户可以使用它们在微信中进行各种任务。微信小程序可以从主屏幕、公众号信息、小程序搜索结果、分享链接等任何场景下进入。开发微信小程序可以使用前端开发技术,比如HTML、CSS和JavaScript。 本篇攻略将详细讲解如何开发一个实时聊天室,支持图片预览的微信小程序应用程…

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