js解码中文url问题

jack7659 2008-10-11 06:49:27
怎样用js对url中的中文进行解码?
如url:

www.b.com/about.html?%B3%C9%B6%BC

怎样将?后的 ?%B3%C9%B6%BC 解码? (中文应该是“成都”)

最好是ie和firefox都可以用的。

用decodeURI("%B3%C9%B6%BC")不行。。.
...全文
2259 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
BearRui 2008-10-12
  • 打赏
  • 举报
回复
你这个%B3%C9%B6%BC是怎么编码过来的,编码的有问题,所以

decodeURIComponent和decodeURI都解不了码
sy_binbin 2008-10-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jack7659 的回复:]
好象不行,


c#的Server.UrlEncode("成都") 是 B3%C9%B6%BC

js的EncodeURI("成都",false) 是 %E6%88%90%E9%83%BD

所以DecodeURI("B3%C9%B6%BC",false)错误,得不到"成都"
[/Quote]

因为JS用的是Unicode的编码格式
http://topic.csdn.net/t/20060608/10/4808378.html

你看下这个吧
csucdl 2008-10-12
  • 打赏
  • 举报
回复
这样吧, URI和URL不一样的, 你用WIN32 api, URLC 开头的具体我忘了, 你查一下MSDN.
daols 2008-10-12
  • 打赏
  • 举报
回复
俄...明白楼主的意思了~~~~

看看这个你能得到点启示:
http://www.baidu.com/s?wd=%B3%C9%B6%BC
http://64.233.161.104/search?hl=zh-CN&q=%E6%88%90%E9%83%BD

在百度的源文件里有一行"charset=gb2312";再看google的是"charset=UTF-8",所以,都是搜的"成都",但是百度的gb编码页面将URL里的汉字转换为其ANSII编码的16进制值,而google的页面是utf8编码的,所以URL中的汉字也转换成其UNICODE编码的十六进制值,javascript里那个xcodeURI函数是以16进制unicode为转换标准的...所以不能解码你说的这个网址....

至于具体怎么转换就不知道了...笨的办法是给每个汉字的ANSII十进制值和汉字对应做成对照表(比如就在百度里搜所有汉字,然后把wd后面的部分截取出来去掉"%"之后四个字一分割-___-!!)...聪明的办法我想不到....
我姓区不姓区 2008-10-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jack7659 的回复:]
好象不行,


c#的Server.UrlEncode("成都") 是 B3%C9%B6%BC

js的EncodeURI("成都",false) 是 %E6%88%90%E9%83%BD

所以DecodeURI("B3%C9%B6%BC",false)错误,得不到"成都"
[/Quote]
alert('<%= Server.UrlDecode("www.b.com/about.html?%E6%88%90%E9%83%BD ") %>');
我这里测Server.UrlEncode("成都")也是%E6%88%90%E9%83%BD哦
mark620 2008-10-12
  • 打赏
  • 举报
回复
你这样吧,用escape函数:

<script language="javascript">
var str="成都";
window.loaction.href='http://www.fanchuanbook.com/search.aspx?superStr='+escape(str);
</script>


.cs里面接收时用:

string str=Request.QueryString["superStr"].ToString();


这样中文就没什么问题了。 LZ试试看


daols 2008-10-12
  • 打赏
  • 举报
回复
javascript:alert(decodeURI('%E6%88%90%E9%83%BD'));

javascript:alert(encodeURI('成都'));

没错阿,,,注意大小写(encodeURI / decodeURI)...
jack7659 2008-10-11
  • 打赏
  • 举报
回复
好象不行,


c#的Server.UrlEncode("成都") 是 B3%C9%B6%BC

js的EncodeURI("成都",false) 是 %E6%88%90%E9%83%BD

所以DecodeURI("B3%C9%B6%BC",false)错误,得不到"成都"
sy_binbin 2008-10-11
  • 打赏
  • 举报
回复
zipStr要转换的字符串

isCusEncode转换类型 选择false

true的我也不知道是转乘什么了!呵呵

用法
<script language="javascript">
document.write("http://www.fanchuanbook.com/search.aspx?q=" + EncodeURI("你骄傲",false));
</script>
jack7659 2008-10-11
  • 打赏
  • 举报
回复
up
jack7659 2008-10-11
  • 打赏
  • 举报
回复
多谢楼上,
但不知道var DecodeURI = function(zipStr,isCusEncode){
的两个参数分别是什么?
sy_binbin 2008-10-11
  • 打赏
  • 举报
回复
http://www.cnblogs.com/vagerent/articles/1279259.html

LZ看看这个吧

87,910

社区成员

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

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