由于某种原因,我在使用 javascriptencodeURIComponent 函数的编码 URI 中获取了额外的代码,即 %25 字符:
我的职能是:
function twit_click() {
var u="https://www.website.com/<?php echo $_SESSION['id'];?>";
var t="sometext";
window.open('http://www.twitter.com/share?url='+encodeURIComponent(u)+'&text='+encodeURIComponent(t),'twitsharer','toolbar=0,status=0,width=626,height=436');
return false;
}
Run Code Online (Sandbox Code Playgroud)
当我单击文本并调用 twit_click() 函数时,我得到以下 URL:
http://twitter.com/intent/tweet?text=sometext&url=https%253A%252F%252Fwww.website.com%252Fuserid
相反,它应该是:
http://twitter.com/intent/tweet?text=sometext&url=https%3A%2F%2Fwww.website.com%2Fuserid
我错过了什么吗?它添加了额外的“25”字符,这意味着我的 URI 中有 %,但我显然没有。
我检查了我的网页的 HTML 代码,并使用Firefox 的 HTML Validator 附加组件对其进行了验证,我发现它抱怨href链接的属性,其中包含 Unicode 字符,这些字符不是 URL 编码的。
当前的网址是:
\n\n<a href=\'/\xd8\xa7\xd8\xae\xd8\xa8\xd8\xa7\xd8\xb1\'>Persian News</a>\nRun Code Online (Sandbox Code Playgroud)\n\n然而,验证者希望它是:
\n\n<a href=\'/%D8%A7%D8%AE%D8%A8%D8%A7%D8%B1\'>Persian News</>\nRun Code Online (Sandbox Code Playgroud)\n\n我已经在几乎所有浏览器(甚至回到 IE6)中测试了此链接。它工作得很好。那么,这里有什么问题呢?我为什么要对其进行编码?验证器是否已过时?href如果标签属性中的 Unicode 字符未进行 URL 编码,我可能会遇到什么问题<a>?
我正在根据 JavaScript 中的RFC4648寻找 base64url 的(快速)标准实现。
到目前为止我想出了:
var base64url = window.btoa(url).replace(/\//g, '_').replace(/\+/g, '-').replace(/=/g, '');
Run Code Online (Sandbox Code Playgroud)
有什么更快的吗?
以下是我的JS代码:
window.location.href = 'products.php?price_range=-INFto2000,2001to5000';
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在 javascript 中对 URL 进行编码并在 PHP 中对其进行解码,这样我的浏览器的导航栏就会显示
“products.php?price_range=-INFto2000%2C2001to5000”
代替
“products.php?price_range=-INFto2000,2001to5000”
我的 php 代码将能够使用-INFto2000,2001to5000in的正确值$_GET['price_range']
无法解析带有 # 的 url 的查询字符串参数。
http://www.example.com/txn/#/user/399AC2F1BB3241823B5E48205C0657FC?utm_source=campaign&utm_medium=testmedium&page=user
Run Code Online (Sandbox Code Playgroud)
URLEncodedUtils.parse 返回零结果。
甚至 URL.getQuery() 也给出 null。
任何通过从 url 中显式删除 # 来解析它的方法。
我有一本字典,我想将其编码为查询参数。我正在访问的服务器期望查询如下所示:http://www.example.com?A=B,C
但是当我尝试使用urllib.urlencode构建 URL 时,我发现逗号变成了%2C:
>>> import urllib
>>> urllib.urlencode({"A":"B,C"})
'A=B%2CC'
Run Code Online (Sandbox Code Playgroud)
有什么方法可以转义逗号,以便urlencode将其视为普通字符吗?
如果没有,我该如何解决这个问题?
我有这个字符串数据要进行 Base64 解码
String mfstr = "BZCaRm9ChAbA58sgSwlhzgVuPwboh2qvgcPuLxKJkLpesdHvyZtaheThUSw6%2BHItGBtgimHpXqbn%0ApggBaRR2wisjNiyQrX03eEJlet6%2BqFL6TouRr0wW3NLRZSHOHUSFtJkpq0cyXy%2FSfMVB47y93xlq%0Az845uXSTK2Vi%2FgzwFVphHd%2BTK%2FrO%2FDxJ4EfvAoW0zxeYS%2BCWnIsl%2F4ILehVYasGtxC%2FjbG1I8S%2Fc%0AZoqXIcPmPWrszbG7R1ouDQ473TyCMLx9PBsl1Z%2Bj39V4Qr01ZRw7GVP2m%2Bk4xrHg2Im1OuXpd2vl%0AKGwe5j2T1ZHtoYxCvXOOU1YeJYSR%2Ff7Kd7KbpnjvFT2Ua%2FOdHx%2FKzBoK3Yk97fdvMcelUGMxveKq%0A8C9aCXFVU1xjK81CwB72QWkK5%2B8DCjItVDFcpnVFnhk8ZwlYKU6o8jETDockNMKiDmBYqKGpnNII%0ACnQBGiWy0inWj40k8VoFNIuVK1yYzLoVvFrYR514Ex6U2AK00c0f7C2C5vISsOEp%2BW8KHG2hFW7G%0A97IgwnX3vtQc0s0SaZ%2B7SPgbxwUujlULaOa0t5W9ZDs9b7jDyBZA7m8DiFrLH2YpzpBhrHXcw%2B%2BZ%0A";
String carg = URLDecoder.decode(mfstr, "UTF-8");
byte[] v5 = Base64.getDecoder().decode(carg.getBytes());
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我收到错误:java.lang.IllegalArgumentException: Illegal base64 character a,到目前为止我已尝试传递StandardCharsets.UTF_8但carg.getBytes()没有任何结果。我在这里做错了什么?
我有一个具有以下格式的字符串:foo://bar_baz.
我需要将整个字符串编码为 URL 友好。现在我正在这样做(正如大多数答案似乎指出的那样):
from urllib.parse import urlencode
mydict = {'q': 'foo://bar_baz'}
urlencode(mydic)
Run Code Online (Sandbox Code Playgroud)
返回:
'q=foo%3A%2F%2Fbar_baz'
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地使用它,但必须定义一个字典并分配一个q我不会使用的键(在本例中)似乎违反直觉/额外的步骤。此外,我需要完成正确解析输出的步骤以删除 ,q=
因为我只需要对 key 的值进行编码q。分割q=可以做到这一点,但如果 foo/bar/baz 实际上是怎么办fooq=?它可能会破坏东西。
我希望做类似的事情:
# pass a string instead of a dict
encoded_string = urlencode("foo://bar_baz")
Run Code Online (Sandbox Code Playgroud)
但这当然会引发错误。
我有一个像这样的字符串:
String A: [ 12234_1_Hello'World_34433_22acb_4554344_accCC44 ]
Run Code Online (Sandbox Code Playgroud)
我想加密字符串A以在干净的URL中使用.这样的事情:
String B: [ cYdfkeYss4543423sdfHsaaZ ]
Run Code Online (Sandbox Code Playgroud)
python中是否有编码API,给定字符串A,它返回String B?在python中是否有解码API,给定String B,它返回String A?
我需要将Cyrillic字符作为参数传递到我的iPhone应用程序中的URL中.示例网址如下所示:
http://www.mysite.com/script.php?message =страшная
当我在浏览器中使用此URL时,它会返回正确的结果.但是,在我的应用程序中,西里尔字母不受欢迎,我最终在didFailWithError代码中得到一个"坏网址" .
我在浏览器中尝试了几种编码来解决这个问题,但没有运气.有没有办法通过iPhone应用程序实际发送上面的确切URL示例?我正在使用的代码片段是:
selectedWord = @"????????";
NSString *requestURL = [NSString stringWithFormat:@"http://www.mysite.com/script.php?message=%@", selectedWord];
NSLog (requestURL);
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:requestURL]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,为了调试目的,我在NSString*selectedWord中硬编码了西里尔字.在实际应用中,它将基于用户输入而动态.
我尝试了一个更复杂的POST,认为我可以将西里尔文作为数据而不是文本传递,但要么我做错了,要么它也不起作用.
有关编码的任何示例我可以在我的浏览器中尝试,然后在应用程序中实现将是有帮助的.我意识到西里尔字母在NSURL中被拒绝,但我希望通过不同的代码或编码来绕过它.
urlencode ×10
url ×4
javascript ×3
python ×3
base64 ×2
java ×2
uri ×2
clean-urls ×1
encoding ×1
hash ×1
html ×1
iphone ×1
nsurlrequest ×1
php ×1
string ×1
url-encoding ×1
urldecode ×1
urllib ×1