Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我怎么能';t url在node.js中编码此url?_Javascript_Url_Encoding_Node.js - Fatal编程技术网

Javascript 我怎么能';t url在node.js中编码此url?

Javascript 我怎么能';t url在node.js中编码此url?,javascript,url,encoding,node.js,Javascript,Url,Encoding,Node.js,结果是: $node querystring = require('querystring') var dict = { 'q': 'what\'s up' }; var url = 'http://google.com/?q=' + querystring.stringify(dict); url = encodeURIComponent(url); console.log(url); 请注意,单引号的编码不正确。node.js模块有问题吗?它编码正确,如果您手动在google sear字段

结果是:

$node
querystring = require('querystring')
var dict = { 'q': 'what\'s up' };
var url = 'http://google.com/?q=' + querystring.stringify(dict);
url = encodeURIComponent(url);
console.log(url);

请注意,单引号的编码不正确。node.js模块有问题吗?

它编码正确,如果您手动在google sear字段中键入相同的查询,您将获得以下地址:

"http://google.com/?q=q=what's%20up"
请注意,
&q=what's+up&
部分

encodeURIComponent
不是Node.js模块,而是标准javascript库的一部分

手动解决方法:

http://www.google.cz/#hl=cs&cp=8&gs_id=u&xhr=t&q=what's+up&pf=p&sclient=psy&site=&source=hp&pbx=1&oq=what's+u&aq=0&aqi=g5&aql=&gs_sm=&gs_upl=&bav=on.2,or.r_gc.r_pw.&fp=792ecf51920895b2&biw=1276&bih=683

在URI查询中允许使用纯文本形式的
。以下是相应的:


如您所见,子delims包含一个普通的
。因此结果是有效的。

我需要对其进行编码,因为Facebook的Graph API在单个引号位于“名称”字段时会中断。如果在youtube中搜索“What's up”,请注意它会对其进行编码。
Graph API中断
,它是如何中断的?你有一些调试信息吗?你使用什么API调用?看看youtube,我会在一分钟内为我的答案添加变通代码
$node
querystring = require('querystring')
var dict = { 'q': 'what\'s up' };
var url = 'http://google.com/?q=' + querystring.stringify(dict);
url = encodeURIComponent(url);
url = url.replace(/'/g,"%27");
query         = *( pchar / "/" / "?" )
pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded   = "%" HEXDIG HEXDIG
sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
              / "*" / "+" / "," / ";" / "="