`

JavaScript中的常用编码

 
阅读更多

一些名词

bit
二进制数字,称作比特
byte
字节,1byte = 8bits。这和ASCII有关,最初ASCII包含128个常用字符,128=2的7次方+1个补码反码表示负数什么的,因此每个字符需要8个二进制来表示。
字符集
charset,也就是某个符号和某个数字映射关系的一个表,也就是它决定了107 是koubei 的 ‘a’,21475 是口碑的“口”,不同的表有不同的映射关系,如 ascii,gb2312,Unicode. 通过这个数字和字符的映射表,我们可以把一个二进制表示的数字转换成某个字符。
编码方式
同是对于应“口”的 21475 这个数,我们是用 \u5k3e3 表示呢,还是用 %E5%8F%A3 来表示呢?这就是由 character encoding 来决定
Unicode
UCS, Universal Character Set。一个囊括所有字符在内的字符集和对应编码方式的标准
gbk, gb2312, utf-8
gbk,gb2312是字符集 (charset)
utf-8 是一种编码方式 (character encoding) ,是 Unicode 标准中 UCS 字符集的一种编码方式
Percent-encoding
Percent-encoding, also known as URL encoding, is a mechanism for encoding information in a Uniform Resource Identifier (URI) under certain circumstances. Although it is known as URL encoding it is, in fact, used more generally within the main Uniform Resource Identifier (URI) set, which includes both Uniform Resource Locator (URL) and Uniform Resource Name (URN). As such it is also used in the preparation of data of the "application/x-www-form-urlencoded" media type, as is often used in email messages and the submission of HTML form data in HTTP requests.
http://en.wikipedia.org/wiki/Percent-encoding

它有两部分字符组成:保留字符和非保留字符。

保留字符:! * ‘ ( ) ; : @ & = + $ , / ? % # [ ]
保留字符,是有特殊意义的,如果在不代表那些特殊意义而代表原意的时候出现,必须经过编码。例如1 ==> %21

非保留字符:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 – _ . ~

javascript的内置函数 encodeURI、decodeURI、encodeURIComponent、decodeURIComponent 就是进行的 Percent Encode,只是在对待 : / ; ?等特殊字符的时候有区别。

JavaScript:escape, encodeURIComponent和encodeURI

对于ASCII字符
这三个函数的作用都是将字符转换成百分比编码(Percent-encoding),区别是各自排除编码的字符不同:
escape()  will not encode:  @ * / +
encodeURI()  will not encode:  ~ ! @ # $ & * ( ) = : / , ; ? + '
encodeURIComponent()  will not encode:  ~ ! * ( ) '
对于非ASCII字符
escape和encodeURIComponent差异比较大:
escape('一') == '%u04BB'
encodeURI('一') == '%u04BB'
encodeURIComponent('一') == '%u04BB'

escape('康') == '%uFFFD%uFFFD'
encodeURI('康') == '%EF%BF%BD%EF%BF%BD'
encodeURIComponent('康') == '%EF%BF%BD%EF%BF%BD'

escape的返回值是非标准Pecent-encoding, 现在已经没有标准支持,建议少用

encodeURI和encodeURIComponent

主要区别:encodeURIComponent比encodeURI转码的字符要多一部分,
包括:@ # $ & = : / , ; ? +

之所以有上面两个不同的函数,是因为我们在写JS代码的时候对URI进行两种不同的编码处理需求。
encodeURI可以用来对完整的URI字符串进行编码处理。
而encodeURIComponent可以对URI中一个部分进行编码,从而让这一部分可以包含一些URI保留字符。
参考:javascript encodeURI和encodeURIComponent的比较

分享到:
评论

相关推荐

    JavaScript中一些常用的小技巧

    在JavaScript编程中,掌握一些常用的小技巧可以极大地提高开发效率和代码质量。以下是一些从网络上整合的实用技巧,特别适合初学者学习。 1. 事件源对象:`event.srcElement` 可以获取触发事件的元素,而 `event....

    js技巧 javaScript编码技巧

    JavaScript,简称JS,是网页开发中的重要脚本语言,它为网页添加动态功能,使得用户交互更为丰富。本文将深入探讨一些JS编码技巧,帮助开发者提升网站特效的实现能力。 一、变量与数据类型 在JavaScript中,变量...

    Javascript键盘虚拟键值编码表

    5. **其他键**:除了上述常见的键之外,还有一些特殊键可能没有在提供的列表中,如Print Screen、Scroll Lock等,它们也有对应的键码,但在JavaScript中不常用。 了解这些键码后,开发者可以利用JavaScript监听键盘...

    使用javascript将汉字转化成UNICODE编码

    在JavaScript中,Unicode编码通常采用UTF-16格式,其中大部分常用字符(包括汉字)由两个字节表示,而其他更复杂的字符可能需要四个字节。 二、JavaScript中的Unicode转换 在JavaScript中,有几种方法可以将汉字...

    arcgis api for javascript 中文帮助文档和demo

    在实际开发中,我们还需要关注性能优化,如延迟加载图层、缓存常用数据、合理设置图层透明度等,以确保地图应用的流畅性。同时,API提供了良好的错误处理机制,帮助开发者诊断并解决可能出现的问题。 总之,ArcGIS ...

    javascript 常用方法总结

    下面将对 JavaScript 中常用的字符串和数组方法进行总结。 字符串方法 1. `charAt()`: 返回在指定位置的字符。 2. `charCodeAt()`: 返回在指定的位置的字符的 Unicode 编码。 3. `concat()`: 连接字符串。 4. `...

    JavaScript中常用内置函数.docx

    JavaScript 中常用内置函数 JavaScript 中有两种函数:一种是语⾔内部事先定义好的函数叫内置函数,另一种是⾃⼰定义的函数。下面是常⽤的 6 种内置函数: 1. eval 函数 eval 函数可以把⼀个字符串当作⼀个 ...

    js对中文字符串进行gb2312编码解码

    在JavaScript(JS)中,处理中文字符编码是一个常见的需求,特别是在与服务器交互或者处理文本数据时。GB2312编码是一种在中国大陆广泛使用的简体中文字符集,它包含了6763个常用汉字和一些其他字符。在JavaScript中...

    JavaScript中常用正则

    Unicode编码中的`[\u4e00-\u9fa5]`区间涵盖了绝大多数现代中文字符,因此在处理中文文本时,这是一个非常实用的模式。 ### 2. 邮件地址验证 ``` \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* ``` 此正则表达式...

    javascript经典特效---编码互换.rar

    "编码互换"在JavaScript中通常指的是字符编码的转换,例如从UTF-8转换到GBK,或者反之。这个主题涉及到字符集、编码标准以及如何在JavaScript中处理不同编码格式之间的转换。 字符编码是计算机存储和显示文本的方式...

    前端中文编码问题

    在网页开发中,最常用的是UTF-8编码,因为它能支持全世界大部分语言的字符。 标题“前端中文编码问题”暗示了我们关注的焦点是前端环境中,中文字符可能遇到的显示异常或乱码问题。这通常发生在以下几个场景: 1. ...

    JavaScript常用正则表达式

    正则表达式在JavaScript中的应用非常广泛,熟练掌握其语法和常用模式对于提高代码的健壮性和效率至关重要。通过不断实践和学习,开发者可以创建出更复杂的正则表达式,以应对各种数据验证和文本处理的需求。

    javascript 常用的属性与方法

    本篇文章主要聚焦于JavaScript中的一些常用属性和方法,特别是针对文档对象模型(DOM)的操作。 1. **document对象**:作为JavaScript中的全局对象,它代表了整个HTML或XML文档。例如,`document.title`用于设置或...

    javascript在线编码查询工具

    在JavaScript中,处理进制转换和字符编码是常见的编程任务。本篇文章将详细解释这些知识点。 **一、进制转换** 进制转换是计算机科学的基础概念,主要包括二进制、八进制、十进制和十六进制之间的转换。在...

    JavaScript基本编码模式小结

    以下是一些在JavaScript编程中常见的基本编码模式和技巧: 1. **变量定义**: - 通常建议一次性声明多个变量,如`var a = 0, b = 1, c = 'xxx';`,这有助于减少代码行数并提高可读性。 2. **使用字面量**: - 尽...

    Javascript中最常用的55个经典技巧

    6. **防止被嵌入框架**:使用JavaScript检查当前页面是否在顶级窗口中,如果不是,则重定向到包含框架的页面。 ```javascript if (window == top) top.location.href = "frames.htm"; ``` 7. **禁止网页被另存为**...

    JavaScript中URL编码函数代码

    在JavaScript中,URL编码是处理URL字符串的重要环节,确保数据在网络传输过程中不会因特殊字符引起解析错误。有三种主要的函数用于对URL进行编码:`escape()`,`encodeURI()`和`encodeURIComponent()`。它们各自有...

    javaScript常用函数使用总结

    JavaScript常用函数使用总结涵盖了多种在JavaScript编程中常用的方法,它们分别属于不同的类型,如String类型和Number类型。以下是对每个函数详细的说明和应用示例: 1. parseInt()函数 parseInt()是String类型的...

    javascript常用判断函数

    JavaScript 是一种广泛用于网页和网络应用的编程语言,尤其在前端开发中扮演着重要角色。本文将详细讲解JavaScript中的几个常见判断函数,这些函数可以帮助开发者进行数据类型的检查和验证。 首先,我们来看`...

Global site tag (gtag.js) - Google Analytics