返回信息流☆─────────────────────────────────────☆
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()了,一会再查查 看看用那个最好 呵呵
这是一条镜像帖。来源:北邮人论坛 / www-technology / #5492同步于 2008/12/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
[合集] url编码的问题
tntzwz
2008/12/21镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。