- 主题:问个js发get请求的编码问题
我的js是utf-8编码,
现在要在js中向某个gb2312编码的网站的网页发get请求然后
得到返回值(网页),
其中请求url为http://***.com/?q=keyword
而要传的keyword有汉子或日韩等文字
所以当我发请求时(这里用XMLHttpRequest的open('GET', url, true)方法),
var url = "http://***.com/?q=" + encodeURIComponent(keyword);
由于encodeURIComponent方法是用utf-8编码的,所以行不通,
***.com网站只接受gb2312编码的urlencode,
(比如中文"我"字的gb2312方式url编码后为:%CE%D2
而utf-8方式url编码后为:%E6%88%91)
请问有什么办法让keyword用gb2312编码来urlencode,然后发送请求?
在这里看到说3种方法,ms都不是很理想:
http://www.jb51.net/article/21686.htm
--
FROM 211.99.222.*
客户端encode两次,服务器端decode一次。
【 在 chwork 的大作中提到: 】
: 我的js是utf-8编码,
: 现在要在js中向某个gb2312编码的网站的网页发get请求然后
: 得到返回值(网页),
: ...................
--
FROM 119.57.128.*
啥意思?
【 在 dhcn (小石) 的大作中提到: 】
: 客户端encode两次,服务器端decode一次。
--
FROM 211.99.222.*
浏览器提交XHR之前,对中文表单数据ecodeuri两次,在服务器端接受这部分数据后对其decode一次,就可以得到正确的中文了。
【 在 chwork 的大作中提到: 】
: 啥意思?
:
--
FROM 124.42.13.*
你是说url改成:
var keyword="我";
var url="http://***.com/?q="+encodeURIComponent(encodeURIComponent(keyword));
这样请求这个url就可以了?
【 在 dhcn (小石) 的大作中提到: 】
: 浏览器提交XHR之前,对中文表单数据ecodeuri两次,在服务器端接受这部分数据后对其decode一次,就可以得到正确的中文了。
--
FROM 211.99.222.*
嗯,服务器端再做一次decode操作就能得到GB字符。
【 在 chwork 的大作中提到: 】
: 你是说url改成:
: var keyword="我";
: var url="http://***.com/?q="+encodeURIComponent(encodeURIComponent(keyword));
: ...................
--
FROM 124.42.13.*
我想我明白你的意思了
但可惜这个***.com是公网一个第三方网站
我无权修改其服务器代码
【 在 dhcn (小石) 的大作中提到: 】
: 标 题: Re: 问个js发get请求的编码问题
: 发信站: 水木社区 (Mon Dec 30 13:43:07 2013), 站内
:
: 嗯,服务器端再做一次decode操作就能得到GB字符。
: 【 在 chwork 的大作中提到: 】
: : 你是说url改成:
: : var keyword="我";
: : var url="http://***.com/?q="+encodeURIComponent(encodeURIComponent(keyword));
: : ...................
:
: --
: 玉不琢,不成器。
: 读千卷书,行千万里路。
:
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 124.42.13.*]
--
FROM 211.99.222.*
那就按照人家的API标准来,不知道标准就用访问代理分析浏览器访问时发的包,然后模拟。
【 在 chwork 的大作中提到: 】
: 我想我明白你的意思了
: 但可惜这个***.com是公网一个第三方网站
: 我无权修改其服务器代码
: ...................
--
FROM 124.42.13.*
扣一个utf-8 to gbk的编码转换库出来
【 在 chwork 的大作中提到: 】
: 我想我明白你的意思了
: 但可惜这个***.com是公网一个第三方网站
: 我无权修改其服务器代码
: ...................
--
FROM 211.144.202.*
encodeURLComponent(escape( url ))
--
FROM 183.16.200.*