BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #5492同步于 2008/12/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

[合集] url编码的问题

tntzwz
2008/12/21镜像同步0 回复
☆─────────────────────────────────────☆ shadan (shadan) 于 (Sun Sep 14 09:54:02 2008) 提到: 在ie中url传递的参数如下:http://localhost/hire/second1.php?inStr=%E7%94%B5%E8%84%91&place=&jobid=&id=c1_2&id1= 在ff中传递的参数如下:http://localhost/hire/second1.php?inStr=电脑&place=&jobid=&id=c1_2&id1= 为什么两者传递的参数不一样呢? 下面这个问题跟上面那个没什么关系 我用ajax传字符串 ie在服务器端接收到的inStr是:“��”,应该是乱码,搜索返回结果是对的 ff在服务器端接受到的inStr是:“电脑”,是汉字,搜索返回结果是错的 这个问题是不是因为ajax编码的问题呢? 编码是utf-8的 这是什么问题呢 ?等大牛解答 ☆─────────────────────────────────────☆ hg (gyh) 于 (Sun Sep 14 10:47:38 2008) 提到: 【 在 shadan 的大作中提到: 】 : 在ie中url传递的参数如下:http://localhost/hire/second1.php?inStr=%E7%94%B5%E8%84%91&place=&jobid=&id=c1_2&id1= : 在ff中传递的参数如下:http://localhost/hire/second1.php?inStr=电脑&place=&jobid=&id=c1_2&id1= : 为什么两者传递的参数不一样呢? : ................... 好像页面编码是UTF-8时firefox以GET方式发送表单时对中文不进行URL编码,直接?inStr=电脑 就传过去了...而用GB2312编码时就会进行URL编码变成inStr=%B5%E7%C4%D4 奇怪... 你在服务端的是asp吗?asp文件是UTF-8编码的还是GB2312编码的? ☆─────────────────────────────────────☆ shadan (shadan) 于 (Sun Sep 14 11:21:02 2008) 提到: 【 在 hg 的大作中提到: 】 : 好像页面编码是UTF-8时firefox以GET方式发送表单时对中文不进行URL编码,直接?inStr=电脑 : 就传过去了...而用GB2312编码时就会进行URL编码变成inStr=%B5%E7%C4%D4 : 奇怪... : ................... 说的很对呀,所有文件的编码都是utf-8的,我的确是用get方式发送的表单。 难道用post发送表单会解决问题? 或者将文件的编码全部改为gb2312的? 或者你有什么其他的方法? 我用的是php语言 ☆─────────────────────────────────────☆ ericyosho (ericyosho) 于 (Sun Sep 14 11:26:50 2008) 提到: 好像还要看你的服务器的设置,你用的什么服务器? 我记得原来用过tomcat的时候,就有一项类似的选项,要在配置文件里面写。 ☆─────────────────────────────────────☆ hg (gyh) 于 (Sun Sep 14 11:51:31 2008) 提到: 【 在 shadan 的大作中提到: 】 : 说的很对呀,所有文件的编码都是utf-8的,我的确是用get方式发送的表单。 : 难道用post发送表单会解决问题? : 或者将文件的编码全部改为gb2312的? : ................... 我按你的方法试了一下,没问题啊 asp上我是用request("inStr")获取的,得到的是UTF-8的串! ☆─────────────────────────────────────☆ shadan (shadan) 于 (Sun Sep 14 12:27:19 2008) 提到: 【 在 ericyosho 的大作中提到: 】 : 好像还要看你的服务器的设置,你用的什么服务器? : 我记得原来用过tomcat的时候,就有一项类似的选项,要在配置文件里面写。 服务器我用的是appache ☆─────────────────────────────────────☆ shadan (shadan) 于 (Sun Sep 14 12:29:31 2008) 提到: 【 在 hg 的大作中提到: 】 : 我按你的方法试了一下,没问题啊 : asp上我是用request("inStr")获取的,得到的是UTF-8的串! 服务器接受到的串是我用ajax传过去的。 但是url中字符串我用php传的 ☆─────────────────────────────────────☆ xw2423 (静水之人) 于 (Sun Sep 14 12:41:54 2008) 提到: 用ajax的话,ie和非ie要分开处理,服务器你是什么编码?原来我用utf-8的时候,ff是正确的 ie是错误 ie需要从gbk转为utf-8,另外数据库也是utf-8的。。。 【 在 shadan (shadan) 的大作中提到: 】 : 服务器接受到的串是我用ajax传过去的。 : 但是url中字符串我用php传的 ☆─────────────────────────────────────☆ shadan (shadan) 于 (Sun Sep 14 13:13:33 2008) 提到: 【 在 xw2423 的大作中提到: 】 : 用ajax的话,ie和非ie要分开处理,服务器你是什么编码?原来我用utf-8的时候,ff是正确的 ie是错误 ie需要从gbk转为utf-8,另外数据库也是utf-8的。。。 好像是这样的,用ajax的确会出现这样的问题,刚刚我用js的encodeURI()这个函数转换了一下,好像已经可以解决问题了。这下服务器端接收到的中文可以正常显示了 。呵呵。谢谢大家。我先试试 有问题的话 再来请教大家 ☆─────────────────────────────────────☆ diysimon (I'm Forain) 于 (Mon Sep 15 16:07:58 2008) 提到: 最好用encodeURIComponent吧 ☆─────────────────────────────────────☆ hg (gyh) 于 (Mon Sep 15 16:20:39 2008) 提到: 【 在 diysimon 的大作中提到: 】 : 最好用encodeURIComponent吧 要是后台是ASP的话直接escape就行了 ☆─────────────────────────────────────☆ shadan (shadan) 于 (Mon Sep 15 22:26:27 2008) 提到: 【 在 diysimon 的大作中提到: 】 : 最好用encodeURIComponent吧 escape() 方法:采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / + encodeURI()方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + ' encodeURIComponent()方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( ) 因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。 因为我的编码都是utf-8的 所以不能用escape,但是我的url中会包括URI的几个部分 所以我就用encodeURI()了,一会再查查 看看用那个最好 呵呵
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。