我正在尝试使用Visual Studio 2005在C#中调用HttpServerUtuility.URLDecode函数,但无法找到它.我using System.Web很好,但是班级似乎并不存在.我是否需要为我的项目添加某种引用?
所以我试图编码/解码一个url,当解码时将返回+来自teh url 的编码符号.例如,我编码website.com/index.php?eq=1+12当编码+转入时%2B,应该如此.当我从中检索值$_REQUEST['eq']并将urldecode()其用作echo时"1 12".我似乎无法通过解码来恢复可以+这么说.我在这里做错了什么,或者是否有更有效/更好的方法来做这件事?这是我使用的确切编码/解码行.
提交页面
<?php
$eq = "1+12";
$send = '<a href="website.com/index.php?eq='.urlencode($eq).'</a>';
echo $send;
Run Code Online (Sandbox Code Playgroud)
检索页面
<?php
$eq = urldecode($_REQUEST['eq']);
echo $eq;
?>
Run Code Online (Sandbox Code Playgroud) 我想解码URL A到B:
A) http:\/\/example.com\/xyz?params=id%2Cexpire\u0026abc=123
B) http://example.com/xyz?params=id,expire&abc=123
这是一个示例URL,我不寻找一般解决方案 A.Replace("\/", "/")...
目前我使用HttpUtility.UrlDecode(A, Encoding.UTF8)和其他Encodings但不能生成URL B!
我经常需要对大型集合或字符串数组进行url编码或解码.除了遍历它们并使用静态URLDecoder.decode(字符串,"UTF-8")之外,是否有任何库可以使这种类型的操作更高效?
一位同事坚持认为使用静态方法就地解码字符串不是线程安全的.那为什么会这样?
所以我试图解码以前在Node中使用php进行urlencoded的字符串.大约一个月前,我有它的工作:
querystring.unescape(str.replace(/\+/g, '%20'));
Run Code Online (Sandbox Code Playgroud)
然后它就停止了工作 - 不确定它是否是某些节点升级或什么.玩完之后,似乎我可以使用'unescape()',但我不确定它是否是万无一失的.
unescape(str.replace(/\+/g, '%20'));
Run Code Online (Sandbox Code Playgroud)
我的问题是什么是最好的方式,并有其他人注意到这个问题.请注意,第一行使用简单的字符串,但使用奇数字符分解 - 所以可能是一些我没有看到的编码问题.
这是一个字符串:
%E6%82%CCI-T%8C%01 + A
现在转到http://www.tareeinternet.com/scripts/unescape.html并对其进行解码.这是我原来的(它是RC4加密的字符串).我希望Node返回该字符串.
关于堆栈溢出有一个问题回答了我的部分问题(请参阅链接) /sf/answers/1220238001/
不幸的是,这个解决方案很麻烦,因为它总是对整个当前文档进行编码/解码。
我的问题是:如何更改该解决方案中的 JavaScript 以仅修改当前文档中选择的任何文本?
我尝试使用Editor.currentView.selected,但是在脚本运行时会引发错误。如果我能找到一个描述 jN 插件可见的所有函数对象和属性的文档就好了。我想这是另一个问题的主题。那好吧。
据http://php.net/manual/en/function.urldecode.php,PHP确实urldecode()在$_GET和$_REQUEST(包含$_POST).
但直接调用$_POST已解码?
我正在使用这个jQuery urlencode和urldecode插件 - 非常简单易用,但它没有以其原始形式+从字符串中删除.主页上的一条评论提示补丁,但我不知道如何实现它.谁能帮我吗?
页面:http://www.digitalbart.com/jquery-and-urlencode/
//URL Encode/Decode
$.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();
var r=/(^[a-zA-Z0-9_.]*)/;
while(x<c.length){var m=r.exec(c.substr(x));
if(m!=null && m.length>1 && m[1]!=''){o+=m[1];x+=m[1].length;
}else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16);
o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;},
URLDecode:function(s){var o=s;var binVal,t;var r=/(%[^%]{2})/;
while((m=r.exec(o))!=null && m.length>1 && m[1]!=''){
b=parseInt(m[1].substr(1),16);
t=String.fromCharCode(b);o=o.replace(m[1],t);}return o;}
});
Run Code Online (Sandbox Code Playgroud)
拟议的补丁:
function dummy_url_decode(url) {
// fixed -- + char decodes to space char
var o = url;
var binVal, t, b;
var r = /(%[^%]{2}|\+)/;
while ((m = r.exec(o)) != null && m.length > 1 && m[1] …Run Code Online (Sandbox Code Playgroud) Chrome的转换这样的:aöüß到%C3%A4%C3%B6%C3%BC%C3%9F
但Firefox将其转换为这里这个奇怪的事情:a%F6%FC%DF
我似乎无法找到一种方法,Firefox的东西转换回原来的PHP.遗憾的是,Urldecode和rawurldecode不起作用.有谁知道如何处理?谢谢.
[这可能不完全是一个编程问题,但它是一个最好由程序员回答的难题。我首先在 Pro Webmasters 网站上尝试过,以压倒性的沉默]
我们的网站上有电子邮件地址验证流程。该站点首先生成一个适当的密钥作为字符串
mykey
Run Code Online (Sandbox Code Playgroud)
然后将该密钥编码为一堆字节
&$dac~?????!
Run Code Online (Sandbox Code Playgroud)
然后 base64 编码那串字节
JiRkYWN+yoyIhIQ==
Run Code Online (Sandbox Code Playgroud)
由于此键将作为要放置在 HTML 电子邮件中的 URL 的查询字符串值给出,因此我们需要先对其进行 URLEncode,然后对结果进行 HTMLEncode,从而为我们提供(示例中 HTMLEncoding 没有效果,但是我懒得重新编写示例)
JiRkYWN%2ByoyIhIQ%3D%3D
Run Code Online (Sandbox Code Playgroud)
然后将其嵌入作为电子邮件的一部分发送的 HTML 中,例如:
click <a href="http://myapp/verify?key=JiRkYWN%2ByoyIhIQ%3D%3D">here</a>.
Or paste <b>http://myapp/verify?key=JiRkYWN%2ByoyIhIQ%3D%3D</b> into your browser.
Run Code Online (Sandbox Code Playgroud)
当接收用户单击链接时,站点会收到请求,提取查询字符串“key”参数的值,base64 对其进行解码、解密,并根据站点逻辑执行相应的操作。
然而,有时我们会有用户报告他们的点击无效。一位这样的用户向我们转发了他发送的电子邮件,经过检查,HTML 已被转换为(根据上面的示例进行说明)
click <a href="http://myapp/verify?key=JiRkYWN+yoyIhIQ%3D%3D">here</a>
Or paste <b>http://myapp/verify?key=JiRkYWN+yoyIhIQ%3D%3D</b> into your browser.
Run Code Online (Sandbox Code Playgroud)
也就是说,%2B 字符串 - 但没有其他百分比编码的字符串 - 已转换为加号。(这肯定给我们留下了正确的值——我已经查看了相应的 SMTP 日志)。
key=JiRkYWN%2ByoyIhIQ%3D%3D
key=JiRkYWN+yoyIhIQ%3D%3D
Run Code Online (Sandbox Code Playgroud)
所以我认为有两种可能性:
我正在做一些愚蠢的事情,我看不到,或者
一些邮件客户端将 %2b 字符串转换为加号,也许是为了应对人们误将 URLEncoding 加号的问题
在 1 的情况下 - 它是什么?在 2 的情况下 - 是否有一种标准的、已知的方法来处理这种情况?
非常感谢您的帮助