escape函数处理带加号字串问题

在使用Jqery做ajax操作的时候有中文老是乱码!必须的使用escape函数编码才正常,encodeURIComponent等函数都不可以,这是因为url中字符被转义,比如空格被编码成加号,于是加号成了空格。我们可以手工将加号编码成 %2B,eg:

escape(str).replace(//+/g, ‘%2B‘);这样就可以了

(url转义字符原理

如果表单的action为list.jsf?act=go&state=5

则提交时通过request.getParameter可以分别取得act和state的值。

如果你的本意是act=‘go&state=5‘这个字符串,那么为了在服务端拿到act的准确值,你必须对&进行转义

[预备知识]

对与通过get方式提交的url,浏览器在提交前首先根据http协议把一一个的参数及其值解析配对。而url的参数间是通过&分割的,这就是浏览器进行参数配置的分割依据。如果你的参数值中含有&等url特殊字符,那么你在服务器端就会拿到意想不到的值。所以必须对url的特殊字符进行转义。

编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。

下表中列出了一些URL特殊符号及编码

 

十六进制值

1. + URL 中+号表示空格 %2B

2. 空格 URL中的空格可以用+号或者编码 %20

3. / 分隔目录和子目录 %2F

4. ? 分隔实际的 URL 和参数 %3F

5. % 指定特殊字符 %25

6. # 表示书签 %23

7. & URL 中指定的参数间的分隔符 %26

8. = URL 中指定参数的值 %3D

所以上述的action你应该写成list.jsf?act=go%26state=5)

时间: 2024-07-29 02:31:08

escape函数处理带加号字串问题的相关文章

【通过操作指针,与指针做函数參数'实现字串在主串中出现的次数,然后将出现的部分依照要求进行替换 】

#include<stdio.h> #include<stdlib.h> int strTime(const char *str1, const char *str2, int *time) { int count = 0; char *p1 = str1; char *p2 = str2; //p1是第一次出现的位置 p1 = strstr(p1, p2); //注意这里不要写成*p1!=NULL 由于p1 是null的地址一旦读取*p1 会出错的!!!!不能读取操作系统的数据

java字串加密及String的各类函数说明

一.字串加密 古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报: 请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想.程序流程图.源代码.结果截图. 1.程序设计思想 先定义字符串,之后输入字符串,算出字符串的长度,用for循环进行字符串的加密,运用ASCLL码表,进行加密,如果是xyz就减23,XYZ同理,其余的就正常加3,最后将加密的字符加到一个空的String类型的成员上,最后输出结果. 2.程序流程图 3.源代码 import java.util.Scanner;

通过操作指针,与指针做函数参数&#39;实现字串在主串中出现的次数,然后将出现的部分按照要求进行替换

#include<stdio.h> #include<stdlib.h> int strTime(const char *str1, const char *str2, int *time) { int count = 0; char *p1 = str1; char *p2 = str2; //p1是第一次出现的位置 p1 = strstr(p1, p2); //注意这里不要写成*p1!=NULL 因为p1 是null的地址一旦读取*p1 会出错的!!!!不能读取操作系统的数据

对setTimeout()第一个参数是字串的深入理解以及eval函数的理解

1 <script language="javascript" type="text/javascript"> 2 var a=1; 3 setTimeout('var a=2;alert(a)', 1000); 4 alert(a); 5 setTimeout('alert(a)',1000); 6 </script>//1 2 1; setTimeout的异步我这里就不做过多的解释(异步回调加入事件队列相关知识),主要写一下对一个参数是字

C语言:自定义一个查找字串的功能函数,类似于&lt;string.h&gt;中的strstr()

//自定义一个字符串字串查找标准库函数strstr() #include<stdio.h> #include<string.h> char* myStrstr(char *str1,char *str2); int main() { char *str1 = "hello worl world ld"; char *str2 = " world "; puts(myStrstr(str1,str2)); return 0; } char *m

java之字符串中查找字串的常见方法

1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引.      int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引. 函数数名:indexOf 调用方式:Object(String).indexOf(String str,int startIndex)或String.indexOf(String str) 参数说明:str需要查找的字串. startI

;徐晓亮的跟随电脑启动的AutoHotkey全局热键和热字串脚本

/*;------------------------------------------------------------[重要提示]在SciTE或者EmEditor中按热键Ctrl+G -> 150 -> Enter跳转到热键定义处①立即升级杀毒软件病毒库②用pft.exe个人文件转移工具转移文件夹到非系统盘D:盘(pft.exe文件来自于一键Ghost硬盘版C:\dosh\ghos\pft.exe)③通过Total Commander的工具栏来正确的新建和打开文件和文件夹(养成只在36

高效操作字串的String Reference类

如下面的代码中一个函数接受一个std::string常量引用,在其函数内部需要使用std::string的一些函数操作字串. void foo(const std::string& param) { ...... } 参数使用的是常量引用,如果传入一个std::string就不需要额外的拷贝.但是如果调用时传入的是一个字串常量,这时必然会生成一个std::string对象,并且会有一次内存拷贝. 关于字串发生拷贝可以使用下面的代码测试: #include <string> namesp

QuickText | 热字串自动替换

分类: 办公支持    版本: 0.0.1    发布日期: 2015-07-09 热字串自动替换生成工具,根据指定的条件(选项)快速生成热字串脚本:Hotstring.ahk 功能简介 两栏窗口,左侧为热字串选项设置,右侧为热字串编辑列表 热字串选项支持“全局选项”及“独立选项” “独立选项”覆盖“全局选项”设置 如要设置独立选项,需选中“独立选项”单选按钮 启用“独立选项”时,可实时生成选项代码 未安装 AutoHotkey.exe 时,执行脚本需自带 Hotstring.exe 程序 热字