为什么要encodeURI(url)两次才不会出现乱码?

zygsee 2010-01-25 02:35:09

var url="/demo/login.do?userName="+userName+"&pwd="+pwd;
url=encodeURI(url);
url=encodeURI(url);

为什么要用两次encode才不是乱码?
而像下面用escape函数就不行呢?
var url="/demo/login.do?userName="+escape(userName)+"&pwd="+escape(pwd);
...全文
42921 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
carelesswhisper187 2012-08-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 3 楼 yixianggao 的回复:

Web 开发常用手册DHTML参考手册.rar

JScript语言参考.rar
http://download.csdn.net/source/308916


http://download.csdn.net/source/308913

样式表中文手册.chm
http://download.csdn.net/sourc……
[/Quote]

山里孩子,没钱充会员呀,下载不鸟。
willowers 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

一般情况下, 发送 encodeURIComponent(parmeName)+"="+encodeURIComponent(parmeValue);
接收时, 直接 String paramValue = request.getParameter(paramName); // 容器自动解码.

我们知道 encodeURIComponent 使用的是 UTF-8 编码规则来编的.
如果……
[/Quote]

学习了!
zyaocccc 2012-08-02
  • 打赏
  • 举报
回复
时光在路上 2012-07-26
  • 打赏
  • 举报
回复
讨论的好
lansedeshuyue 2012-07-02
  • 打赏
  • 举报
回复
呵呵,谢谢分享,正是我想要的
w3occd 2012-06-18
  • 打赏
  • 举报
回复
用一次与二次的不同在你是别人的javascript库,这需2次,需要再次解析。如你不是用别的javascript库,用一次就行了。
pubple_nashui 2012-05-17
  • 打赏
  • 举报
回复
我怎么在php中urlencode4次转译。在js中decodeURIComponent字符2次 就不乱码了啊?求解、
zhoulinli915 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]

escape () 这个方法不错阿,我一直在用它,但是网上有人说他不好,我也不知道为什么!我是asp.ent网站开发时用的!呵呵,每个人是情况而定吧!并不是非黑即白!!
[/Quote]
.net正解
fanpengfei67 2011-12-14
  • 打赏
  • 举报
回复
用了8楼的方法
$name=iconv("utf-8","gb2312",urldecode($_GET['name']));
这样就成功了
zjysun 2011-11-18
  • 打赏
  • 举报
回复
好贴呀,解决了我的问题,还解释得明白。
qjavalearner 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wcwtitxu 的回复:]

引用 1 楼 dh20156 的回复:
前端需要两次 encodeURI,因为一次encodeURI还有一些字符不会被编码。


这里并不准确, encodeURI 不编码的字符,不管encodeURI多少次,都不编
JScript code

var s = encodeURI("?");
s = encodeURI(s);
s = encodeURI(s);
s = encode……
[/Quote]

encodeURI 方法不会对下列字符进行编码:":"、"/"、";" 和 "?"。
syj20052005 2011-05-23
  • 打赏
  • 举报
回复
嘿嘿,又学习了一下新东西。
damon08708 2011-02-22
  • 打赏
  • 举报
回复
escape () 这个方法不错阿,我一直在用它,但是网上有人说他不好,我也不知道为什么!我是asp.ent网站开发时用的!呵呵,每个人是情况而定吧!并不是非黑即白!!
ycl1314 2010-11-01
  • 打赏
  • 举报
回复
escape 帮了我个忙。。。。
hunanseo 2010-05-26
  • 打赏
  • 举报
回复
学习了...Mark了
呼吸先生 2010-01-26
  • 打赏
  • 举报
回复
mark
wcwtitxu 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 renzaijiang 的回复:]
浏览器会给你编一次 用gbk编
[/Quote]

使用 <form>...</form> 提交的,浏览器才会编码.
ajax 提交的,需要自己手动



---------------------------------------------------------


[Quote=引用 11 楼 zygsee 的回复:]
引用 10 楼 renzaijiang 的回复:
浏览器会给你编一次 用gbk编

浏览器为什么用gbk编而不用别的?所有浏览器都这样 还是某一个浏览器这样?所有字符都编码还是编码一部分?请您指教
[/Quote]

<form>提交时,浏览器使用什么编码编,决定于 form 的 accept-charset 属性(标准浏览器) 或者 document.charset(IE)
<form accept-charset="...." >...</form>

提交 application/x-form-www-encoded 表单时,浏览器 把所有参数 按 key=value 的形式组合
分别对 key, value 进行编码.

多个参数间,用 "&" 连接, 如: key2=%E4%B8%AD%E6%96%87&key=AAAA&key=BBB&key1=CCC&%E6%B1%89%E5%AD%97=%E4%B8%AD%E6%96%87



qq373591361 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yixianggao 的回复:]

Web 开发常用手册

JScript语言参考.rar
http://download.csdn.net/source/308916

DHTML参考手册.rar
http://download.csdn.net/source/308913

样式表中文手册.chm
http://download.csdn.net/source/304124

[/Quote]
我越来越喜欢你那三个连接
zygsee 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 renzaijiang 的回复:]
浏览器会给你编一次 用gbk编
[/Quote]
浏览器为什么用gbk编而不用别的?所有浏览器都这样 还是某一个浏览器这样?所有字符都编码还是编码一部分?请您指教
renzaijiang 2010-01-26
  • 打赏
  • 举报
回复
浏览器会给你编一次 用gbk编
加载更多回复(10)

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧