Javascript Query String Parsing

1. URL encoding

为什么要进行URL encoding?这是因为,有些字符是不能成为URL一部分的,举个例子,比如空格符。另外,有些有特殊含义的保留字符,比如#,作为HTML锚点,用于定位到HTML文档的某个位置上;=符号在URL里用于分割URL参数的key和value。

URL encoding依据以下规则:

  • 字母(A–Z 以及 a–z),数字(0-9)以及‘.‘,‘-‘,‘~‘和‘_‘这些字符不进行编码
  • 空格符要编码成+或者"%20"
  • 所有其他的字符,要被编码成%HH这样形式的十六进制表示;任何非ASCII字符,应该要取UTF-8的十六进制(或者是其他编码),以%HH表示;

NOTE: 更多详细信息,可以参考这篇WIKI——Query String。关于空格符以及其他的保留字符,可以去查阅标准文档RFC 1738

2. Javascript Encode/Decode Functions

Javascript内置了几对编码和解码的函数。起初只有escape和unescape这一对方法,但后来这对方法已经不推荐使用了,新的标准制定了两对新的编码和解码函数:encodeURI和decodeURI以及encodeURIComponent和decodeURIComponent。

但实际上内置的编码解码函数,对于URL query string的编码和解码却不是十分正确的。

代码 结果 说明
"A + B" "A+%2B+B" 期望值
escape("A + B") "A%20+%20B" 错误
encodeURI("A + B") "A%20+%20B" 错误
encodeURIComponent("A + B") "A%20%2B%20B" 可以接受,但是有点奇怪
代码 结果 说明
"A+%2B+B" "A + B" 期望值
unescape("A+%2B+B") "A+++B" 错误
decodeURI("A+%2B+B") "A+%2B+B" 错误
decodeURIComponent("A+%2B+B") "A+++B" 错误

NOTE:SEE ALSO:Javascript Madness: Query String Parsing

Javascript Query String Parsing,布布扣,bubuko.com

时间: 2024-12-25 04:10:44

Javascript Query String Parsing的相关文章

[Javascript] How to use JavaScript's String.replace

In JavaScript, you can change the content of a string using the replace method. This method signature is overloaded with a bunch of different ways to do string replacement in JavaScript. This lesson covers the entire API (including an interestingDSL 

JavaScript中String对象的match()、replace() 配合正则表达式使用

正则表达式由来已久,查找替换功能非常强大,但模板难记复杂. JavaScript中String对象的match().replace()这2个方法都要使用正则表达式的模板.当模板内容与字符串不相匹配时,match()返回null,replace()返回原字符串. 正则表达式的模板对象 //标准写法 regexp = new RegExp(pattern[, flag]); pattern: 模板的用法是关键,也是本章的主要内容. flag: "i"(ignore)."g&quo

javascript 之string.format

function(){ 'use strict'; if(String.prototype.format) return; String.prototype.format = function(args){ var _dict = typeof(args) == 'object' ? args : arguments; return this.replace(/{([^{}]+)}/g,function(s,n){ return _dict[n]===undefined?s:_dict[n];

Query String模块

一.对象方法 querystring.parse(str[, sep[, eq[, options]]]) //将一个 query string 反序列化为一个对象.可以选择是否覆盖默认的分割符('&')和分配符('='). querystring.stringify(obj[, sep[, eq[, options]]]) //序列化一个对象到一个 query string.可以选择是否覆盖默认的分割符('&')和分配符('=').

node.js学习第六天--Query String

1.字符串转换 Query String模块的基本介绍 Query String模块用于实现URL参数字符串与参数对象之间的互相转换,提供了“stringify”.“parse”等一些实用函数来针对字符串进行处理,通过序列化和反序列化,来更好的应对实际开发中的条件需求,对于逻辑的处理也提供了很好的帮助,下面就让我们一起来了解学习它吧! 2.序列化 stringify函数的基本用法 stringify函数的作用就是序列化对象,也就是说将对象类型转换成一个字符串类型(默认的分割符(“&”)和分配符(

Javascript中String对象的常用方法

charAt(): 返回在指定位置的字符. charCodeAt(): 返回在指定的位置的字符的 Unicode 编码. var s = "Smile forever!"; s.charAt(2); //i s.charCodeAt(2); //105 concat(): 连接字符串,参数可以是多个字符串. var s1 = "Smile forever!"; var s2 = "extend"; s1.concat(s2); //Smile f

javascript 之String

1 String.prototype.format = function(args){ 2 var _dict = typeof(args)=='object'?args:arguments; 3 return this.replace(/\{([^{}]+)\}/g,function(s,k){ 4 return (_dict[k]==undefined)?s:_dict[k]; 5 }); 6 }; string.replace(regexp, replacement) 参数: regexp

JavaScript中String对象处理HTML标记中文本的方法

big():创建一个<big></big>标记,将这个字符串的字体变大blink():创建一个<blink></blink>标记,使字符串具有闪烁效果bold():创建一个<bold></bold>标记,使字符串加粗显示fixed():创建一个<tt></tt>标记,使字符串固定倾斜显示italics():创建一个<i></i>标记,使字符串以斜体显示small():创建一个<sm

JavaScript中string.replace的一个特殊用法

1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 5 <title></title> 6 <script type="tex