标签: encodeuricomponent

如何编码URL参数?

我试图将参数传递给URL,如下所示:

http://www.foobar.com/foo?imageurl=
Run Code Online (Sandbox Code Playgroud)

并且我想传递由另一个API生成的参数suchas和image URL,并且图像的链接结果如下:

http://www.image.com/?username=unknown&password=unknown
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用URL时:

http://www.foobar.com/foo?imageurl=http://www.image.com/?username=unknown&password=unknown
Run Code Online (Sandbox Code Playgroud)

它不起作用..

我也尝试在imageURL上使用encodeURI和encodeURIComponents,这也行不通.

javascript url encodeuricomponent

105
推荐指数
4
解决办法
10万
查看次数

87
推荐指数
2
解决办法
6万
查看次数

url-Encode vs Base64编码(用法)?

我在想...

(除了base64的问题加上查询字符串中的'+'符号 - 它被转换为'space'并且可以通过%2b解决):--->哪个是在查询字符串中传输数据的首选方法?

这两个函数都可以通过JS命令使用:

  • btoa
  • encodeUriComponent

所以我问自己(和你):

什么时候应该用什么?(我一直用 encodeUriCompoonent- 本能).

定义不同的问题 - 但实现可能类似......

编辑

我想我已经找到了询问的理由......(以及为什么之前没有人问过)

在此输入图像描述

javascript asp.net base64 encodeuricomponent query-string

27
推荐指数
1
解决办法
2万
查看次数

javascript encodeURIComponent并将空格转换为+符号

我想编码我的URL,但我想将空格转换为加号.

这就是我试图做的......

var search = "Testing this here &";

encodeURIComponent(search.replace(/ /gi,"+"));
Run Code Online (Sandbox Code Playgroud)

从那里得到的输出是Testing%2Bthis%2Bhere%2B%26我想要的是Testing+this+here+%26我尝试用空格替换%20它以将其转换为加号,但这似乎不起作用.谁能告诉我这是什么我在这里做错了?

javascript regex replace encodeuricomponent

17
推荐指数
1
解决办法
2万
查看次数

Firefox自动解码url中的编码参数,在IE中不会发生

我在Firefox和IE之间感到沮丧,主要是Firefox,因为它在我可以在Javascript中使用它之前自动解码哈希中的参数.IE不会自动解码网址,因此不会给我读错误.

我的问题类似于这个问题,除了我没有使用ASP.NET ASP.NET MVC自动解码来自AJAX的JSON编码参数

所以如果我拿一个网址就好 example.com/#question=!%40%23%24%25^%26*(

而"!%40%23%24%25 ^%26*("使用encodeURIComponent编码,在IE中,当我访问哈希时,它将保留为"!%40%23%24%25 ^%26*( "但是在firefox中,当我访问哈希时,它会被自动解码为"!@#$%^&*("

这个问题是在我的脚本中我使用decodeURIComponent来解码编码值,如果字符串确实是编码的话,这很好.由于它已经在Firefox中解码,它给我一个格式错误的URI序列错误,IE并没有给我任何错误.

我怎样才能解决这个问题?

javascript ajax encoding encodeuricomponent

16
推荐指数
1
解决办法
8471
查看次数

无法使用javascript下载大数据

我在javascript中有一个JSON对象形式的大数据.我已使用JSON.stringify()将其转换为字符串.现在我的用例是在文本文件中向用户提供这个大字符串.所以为此,我写了下面的代码.

HTML代码

  <button id='text_feed' type="submit">Generate ION Feed</button>

  <a href="data:attachment/txt" id="textLink" download="feed.txt"></a>
Run Code Online (Sandbox Code Playgroud)

Javascript代码

 var text = //huge string  

 $("#text_feed").click(function() {
        _generateFeed(text);
 });

 var _generateFeed = function(text) {
    //some code here
    $("#textLink").attr("href",
                          "data:attachment/txt," + encodeURIComponent(text))  [0].click();
    });
 }; 
Run Code Online (Sandbox Code Playgroud)

问题:当字符串长度很小时,我可以下载数据.但是当字符串长度变得更高(> 10 ^ 5)时,我的页面崩溃了.发生这种情况是因为"encodeUriComponet(text)"无法编码大数据.

我也尝试了window.open("data:attachment/txt," + encodeURIComponent(text)); 但是我的页面再次崩溃,因为encodeURIComponet无法编码这么大的字符串的原因相同.

另一种方法:我还考虑使用HTML5文件编写API将数据写入文件,但它仅支持Chrome浏览器,但我需要将其用于至少firefox和chrome.

用例 我不想通过破坏数据来进行多次下载,因为我最终需要在单个文件中存储数据.

我的目标是支持大约10 ^ 6长度的字符串.任何人都可以帮我如何下载/写入这些数据到一个文件.

javascript html5 download encodeuricomponent

11
推荐指数
1
解决办法
2590
查看次数

encodeURIComponent()的不同行为仅适用于Firefox

我编码一个文件名并将其作为URL的一部分发送/rest/get?name=Filename.txt.在JS链接构建就像一样简单

url = '/rest/get?name=' + window.encodeURIComponent(file.name);
Run Code Online (Sandbox Code Playgroud)

它适用于简单的情况,但对于硬核测试,我使用一个名为的文件

??abcABCæøåÆØÅäöüïëêîâéíáóúýñ½§!#¤%&()=`@£$€{[]}+´¨^~'-_,;.txt
Run Code Online (Sandbox Code Playgroud)

在URI编码后,我希望得到一个链接

/rest/get?name=%E4%BD%A0%E5%A5%BDabcABC%C3%A6%C3%B8%C3%A5%C3%86%C3%98%C3%85%C3%A4%C3%B6%C3%BC%C3%AF%C3%AB%C3%AA%C3%AE%C3%A2%C3%A9%C3%AD%C3%A1%C3%B3%C3%BA%C3%BD%C3%B1%C2%BD%C2%A7%3F%3FabcABC%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD!%23%C2%A4%25%26()%3D%60%40%C2%A3%24%E2%82%AC%7B%5B%5D%7D%2B%C2%B4%C2%A8%5E~%27-_%2C%3B.txt
Run Code Online (Sandbox Code Playgroud)

我明白了 构建的链接在最新版本的IE和Chrome中正常工作,但在Firefox中失败.经过一番调查后我发现在Firefox中encodeURIcomponent工作方式不同.这是Firefox中的实际结果:

/rest/get?name=%3F%3FabcABC%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD!%23%EF%BF%BD%25%26%28%29%3D%60%40%EF%BF%BD%24%3F{[]}%2B%EF%BF%BD%EF%BF%BD^~%27-_%2C%3B.txt
Run Code Online (Sandbox Code Playgroud)

视觉比较(Chrome链接位于左侧,Firefox链接位于右侧):

对照

我还尝试将有效链接(在Chrome中构建)复制并粘贴到Firefox,它可以正常工作.

为什么我会得到不同的结果?
我不喜欢 使用不同的编码吗??e?n?c?o?d?e?U?R?I?c?o?m?p?o?n?e?n?t?(?)?̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶
encodeURIComponent()

UPD.我发现了类似的问题(encodeURIComponent在中国的浏览器中表现不同,因为位置 [搜索]和 encodeURIComponent与浏览器和ä-å-å字符 [äöå]的区别),两者都没有答案.

UPD.2进一步调查显示,以下字符的编码方式不同,导致服务器上出现"文件未找到"异常:

  • 你好
  • æøåÆØÅäöüïëêîâéíáóúýñ
  • ½§¤
  • £€

javascript firefox url-encoding encodeuricomponent

9
推荐指数
1
解决办法
756
查看次数

jQuery encodeURI for href无法正常工作

我在编码字符串时遇到问题,因此我可以将变量放入链接中.我确信这很简单,但是我无法改变任何事情.

$("a.inquiry").attr("href", "/inquiry/6933/text=" + encodeURI("text o"));
Run Code Online (Sandbox Code Playgroud)

这不起作用.

encodeURI("text o")
Run Code Online (Sandbox Code Playgroud)

仍然回归:

link/text o
Run Code Online (Sandbox Code Playgroud)

代替:

link/text%20
Run Code Online (Sandbox Code Playgroud)

还尝试过:

$("a.inquiry").attr("href", encodeURIComponent("/inquiry/6933/text=" + "text o"));
Run Code Online (Sandbox Code Playgroud)

javascript jquery urlencode encodeuricomponent

7
推荐指数
2
解决办法
1万
查看次数

Lua - decodeURI(luvit)

我想在我的Lua(Luvit)项目中使用decodeURI或使用decodeURIComponentJavaScript .

JavaScript的:

decodeURI('%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82')
// result: ??????
Run Code Online (Sandbox Code Playgroud)

很喜欢:

require('querystring').urldecode('%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82')
-- result: '%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82'
Run Code Online (Sandbox Code Playgroud)

lua encodeuricomponent urldecode decodeuricomponent

6
推荐指数
1
解决办法
3441
查看次数

空字符串+ null ="null"?

今天我遇到了一个奇怪的事情,同时在我们的应用程序中排除了流氓AJAX请求.我们使用jQuery.param构建请求字符串将数据发送回服务器.

在一个场景中,提供给param函数的对象有一个null选项,所以它看起来像这样:

var myData = {
     x : 1,
     y : null
};
var params = jQuery.param(myData);
Run Code Online (Sandbox Code Playgroud)

这段代码实际上埋藏在骨干集合中,但原理是一样的.

现在,当服务器收到变量的参数y是文字字符串"null"而不是存在时,我感到非常震惊null.

经过一番挖掘后,我发现encodeURIComponent(null)返回字符串"null"并获得更有趣的'' + null收益"null".这在Chrome 23以及Firefox 11上进行了测试.

最终发送到jQuery.param函数的对象是从函数的参数构建的,而null是参数的完全有效值.我只是通过构建对象来解决它y : param || '',但我很好奇本机JS函数的明显错误,以及为什么'' + null = "null",因为它们通常被认为是两个不同的概念.

javascript encodeuricomponent

5
推荐指数
1
解决办法
2179
查看次数