标签: encodeuricomponent

encodeURIComponent抛出异常

encodeURIComponent使用用户提供的输入在函数的帮助下以编程方式构建URI .但是,当用户输入无效的unicode字符(例如U+DFFF)时,该函数会抛出异常,并显示以下消息:

要编码的URI包含无效字符

我在MSDN上看了这个,但这并没有告诉我任何我不知道的事情.

纠正此错误

  • 确保要编码的字符串仅包含有效的Unicode序列.

我的问题是,有没有办法清理用户提供的输入,以便在我将其传递给encodeURIComponent函数之前删除所有无效的Unicode序列?

javascript unicode uri encodeuricomponent

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

Elixir 中的encodeURIComponent

寻找 Elixir 方法来编码 uri 组件,即 基本上我想要encode_query,但不必进行键值映射,并将空格编码为 %20,而不是 +javascript encodeURI("&") "&" encodeURIComponent("&") "%26" Elixir URI.encode("&") "&" pry(11)> URI.encode_query(%{k: " & "})
"+k=%26+"

uri elixir encodeuricomponent

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

在Ajax POST和JSON中发送特殊字符

@解决了

正如James M. Lay所解释的那样,我应该将我的内容类型application/x-www-form-urlencoded改为application/json

它隐含在一个错误中,因为似乎只有UrlEnconded类型在服务器端生成POST数组(至少在PHP中).所以我不得不改变我在服务器脚本中接收/处理请求的方式

$json = file_get_contents('php://input'); //yes. php://input

if($json) $params = json_decode($json,true);
else $params = $_POST;
Run Code Online (Sandbox Code Playgroud)

我还必须在Javascript代码中进行一些更改以检查内容类型并生成不同的字符串.如果它是JSON我只是使用JSON.stringify

//string to use in the 'send' method
this.getParametersString = function(){
        if(this.contentType == 'application/json'){
            return JSON.stringify(this.parameters);
        }else{}
}
Run Code Online (Sandbox Code Playgroud)

我有一个问题

我正在构建一个函数,它接收参数以写入参数列表并通过POST发送它

问题是我们不能发送特殊字符,例如 +

所以我尝试使用该函数encodeURIComponent将它们编码为URI友好字符串.

还有另外一个问题:如果收到的参数是一个对象,我循环遍历属性,检查它是否是另一个对象或字符串,如果它是一个对象,再次循环,否则编码它.

但它返回一个编码字符串的对象.我必须使对象成为发送它的字符串,为此我使用JSON.stringify.它解码编码的字符串.所以再次%2B成为+,它不会通过POST发送到服务器.

另一方面,如果我stringify先使用encodeURIComponent它,它会生成不应该编码的"和{}等符号,而且字符串不是写得很好的JSON

那你怎么样?这是不使用jQuery的方式吗?我是否必须构建自己的stringify函数?!

javascript ajax json encodeuricomponent stringify

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

在XPage中使用encodeURIComponent

在W3Schools中他们给出了这个例子:

var uri = "http://w3schools.com/my test.asp?name=ståle&car=saab";
var res = encodeURIComponent(uri);
Run Code Online (Sandbox Code Playgroud)

然而,当我运行它时,我得到了一个错误,即没有实现encodeURIComponent.

try{    
    var str:String = "Contracts and Leases";
    var rtn = encodeURIComponent(str);
}catch(e){
    println(e)
}
Run Code Online (Sandbox Code Playgroud)

将上面的内容添加到按钮中我得到了未实现的错误.是否有一个等价物,我只需要用%20s替换空格.

replace encodeuricomponent xpages xpages-ssjs

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

encodeURI(JSON.stringify())在URL中显示%255B

我试图通过Angular中的queryParam,它由这样的对象数组组成fooArray = [{foo: 'bar', foo: false}, {foo: 'bar', foo: false}]。在URL queryParam中,我收到以下消息:使用时,%255BencodeURI(JSON.stringify(this.fooArray))

我试过使用encodeURI(JSON.stringify())将数组编码为queryParam和JSON.parse(decodeURIComponent())以检索参数

fooArray = [{foo: 'bar', foo: false}, {foo: 'bar', foo: false}]

fooParam: encodeURI(JSON.stringify(this.fooArray))

JSON.parse(decodeURIComponent(params["fooParam"]))

javascript urlencode encodeuricomponent query-parameters

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

JS encodeURIComponent结果与FORM创建的结果不同

我认为在表单中输入的值是由浏览器正确编码的.

但是这个简单的测试文件"test_get_vs_encodeuri.html"显示它不是真的:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
   <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
   <title></title>
</head><body>

<form id="test" action="test_get_vs_encodeuri.html" method="GET" onsubmit="alert(encodeURIComponent(this.one.value));">
   <input name="one" type="text" value="Euro-€">
   <input type="submit" value="SUBMIT">
</form>

</body></html>
Run Code Online (Sandbox Code Playgroud)

点击提交按钮时:

encodeURICompenent将输入值编码为"Euro-%E2%82%AC"

浏览器进入GET查询时只写一个简单的"Euro-%80"

  1. 有人能解释一下吗

  2. 如何使用Javascript以与Borwser的FORM(windows-1252)相同的方式编码所有内容?(转义函数不起作用,encodeURIComponent也不起作用)?

或者encodeURIComponent进行不必要的转换?

javascript urlencode url-encoding encodeuricomponent

0
推荐指数
1
解决办法
5599
查看次数

encodeURIComponent的效率如何?

在主流浏览器中encodeURIComponent实现的效率如何?值得记住对encodeURIComponent的调用吗?

javascript performance encodeuricomponent

0
推荐指数
1
解决办法
467
查看次数