我有角度应用程序,我想在查询字符串中传递加号+,如:
http://localhost:3000/page?name=xyz+manwal
Run Code Online (Sandbox Code Playgroud)
当我点击此URL时,它将转换为:
http://localhost:3000/page?name=xyz%20manwal
Run Code Online (Sandbox Code Playgroud)
凡%20指的空间.我该如何阻止这种转换?
我需要在类库程序集中编码URL,我不想引用System.Web.URL包含多个空格
https://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quote where symbol in ("YHOO","AAPL")&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=
Run Code Online (Sandbox Code Playgroud)
当我使用System.Net.WebUtility.UrlEncode()时,空格将替换为"+",这不起作用.我需要用%20替换它们
如何在不引用System.Web的情况下实现此目的?
我有一个来自HTTP标头的字符串,但它已被转义..我可以使用什么功能来解决它?
myemail%40gmail.com -> myemail@gmail.com
Run Code Online (Sandbox Code Playgroud)
urllib.unquote()是否可行?
至少在 Chrome 中是这样。如果我的窗口的 URL 是https://www.google.com/search?q=JavaScript+URLSearchParams并且我在 JavaScript 控制台中运行它:
url = new URL(document.URL);
urlsp = url.searchParams;
console.log(urlsp.get("q"));
Run Code Online (Sandbox Code Playgroud)
那么记录到控制台的不是JavaScript+URLSearchParams,而是JavaScript URLSearchParams。这很痛苦,因为我尝试编写的用户脚本需要访问q参数的实际值;并且+不被浏览器对待。当然,我可以编写一些将 URL 作为字符串处理的代码,但这会很乏味且容易出错。同样的处理发生%3A在参数中的值上,但它被返回:。如何让 URLSearchParams 返回 URL 参数的实际值?
我有一个jax-rs服务,它接收路径中的一组参数pathparameters.这些参数可能是包含不适合url的值的字符串,因此它们在客户端使用java.net.UrlEncoder进行urlencoded,如下所示:
String param = URLEncoder.encode(o.toString(), "UTF-8");
Run Code Online (Sandbox Code Playgroud)
这用于构建URL supplier/group/param1/param2/param3.如果其中一个因urlencoding而被更改,例如,如果它只是一个空格,则在服务上接收的字符串是一个+符号.
@GET
@Path("{supplierId}/{groupCode}/{groupId}")
@Produces({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
public SupplierGroup getSupplierGroup(@PathParam("supplierId") BigDecimal supplierId,
@PathParam("groupCode") String groupCode,
@PathParam("groupId") BigDecimal groupId) {
//now groupCode is "+", not " "
}
Run Code Online (Sandbox Code Playgroud)
我希望jaxrs能够自动解码编码路径参数.
编辑:测试更多我发现,当发送使用%20空间时,它能够解码参数.
几年前,我创建了一个数据库驱动的ASP.NET站点,该站点使用单个APSX页面显示所有站点页面.因此,该网站的所有网址都采用以下格式:
/main.aspx?page=Page+Title+One
/main.aspx?page=Another+Article+Title
/main.aspx?page=Third+Page
Run Code Online (Sandbox Code Playgroud)
main.aspx页面获取查询字符串数据(例如,Page + Title + One),并将其用作从SQL Server数据库中提取相应文章内容的键.页面的实际标题存储在带空格而不是加号的数据库中(例如"Page Title One").
在URL查询字符串中使用+号作为单词分隔符的糟糕决定导致最近搜索引擎出现很多问题(重复内容等),因此我想修复它,但不更改URL.
我想要做的是当搜索引擎或访问者试图访问错误的URL时,错过+符号并改为使用空格,例如:
/main.aspx?page=Page Title One
Run Code Online (Sandbox Code Playgroud)
我想做301永久重定向到:
/main.aspx?page=Page+Title+One
Run Code Online (Sandbox Code Playgroud)
为了能够做到这一点,我需要检查查询字符串值是否有加号或空格,但是当我使用Request.QueryString ["page"]得到值时,即使实际的问题字符串已经加入,我仍然得到字符串白色空间"页面标题一".
该站点在IIS6/Win 2003上运行.
我怎样才能做到这一点?
我知道%20和+都解码为相同的二进制值(空格),对于大多数Web服务器,尤其是那些映射到物理文件的Web服务器,它们将指向相同的资源.
但我的问题是,必须像网址http://www.example.org/hello%20world指向相同的资源http://www.example.org/hello+world,是他们规范地一样的吗?
在HTTP/1.0 +中没有映射到空格,所以我特别询问HTTP/1.1.
我是url编码一串文本传递给一个函数.但是,它将双空格中的第二个空格编码为"%A0".这意味着当我解码字符串时,"%A0"在黑框中显示为问号.
我真的只需要能够删除额外的空间,但我想了解是什么导致了这个以及如何正确处理它.
例如:
Something Something else
Run Code Online (Sandbox Code Playgroud)
编码为:
Something+%A0Something+else
Run Code Online (Sandbox Code Playgroud) 我在使用node.js发布数据时遇到问题 Content-type: 'application/x-www-form-urlencoded'
var loginArgs = {
data: 'username="xyzzzzz"&"password="abc12345#"',
//data: {
// 'username': "xyzzzzz",
// 'password': "abc12345#",
//},
headers: {
'User-Agent': 'MYAPI',
'Accept': 'application/json',
'Content-Type':'application/x-www-form-urlencoded'
}
};
Run Code Online (Sandbox Code Playgroud)
并且发布请求是:
client.post("http:/url/rest/login", loginArgs, function(data, response){
console.log(loginArgs);
if (response.statusCode == 200) {
console.log('succesfully logged in, session:', data.msg);
}
Run Code Online (Sandbox Code Playgroud)
它总是返回用户名/密码不正确.
在其余的api中,据说请求体应该是:
username='provide user name in url encoded
format'&password= "provide password in url encoded format'
Run Code Online (Sandbox Code Playgroud) 我们有一个系统可以发送带有链接的常规电子邮件,其中许多包含URL编码参数,例如:
href="http://www.mydomain.com/login.aspx?returnurl=http%3A%2F%2Fwww.mydomain.com%2Fview.aspx%3Fid%3D1234%26alert%3Dtrue"
Run Code Online (Sandbox Code Playgroud)
您可以看到"returnurl"参数已编码.但是,似乎我们的大量用户(看似hotmail)正在接收带有此部分解码的电子邮件,部分解码如下:
href="http://www.mydomain.com/login.aspx?returnurl=http://www.mydomain.com/view.aspx?view.aspx%3Fid%3D1234%26alert%3Dtrue"
Run Code Online (Sandbox Code Playgroud)
为什么会像这样解码?为什么只能部分解码?因此我不知道如何处理它.我想到base-64编码但是base64字符串包含需要解码的字符......我想到了双重编码但是我不知道是否要对参数进行双重解码......任何人都可以帮忙吗?谢谢.