大家好我发现,要打开GMAIL撰写屏幕,您必须登录并打开以下链接:
替换变量将填写撰写表单上的相应位置.但是,如果我想进入身体多行文本或换行符,即使我对其进行了urlencode也无法正常工作.这里有什么想法?
我正在开发一个ASP.NET MVC2项目.问题是当一个将被重写为URL的字符串包含一个特殊字符(如反斜杠或问号)时,即使我之前编码过它,URL也会出错.
例如:
http://domain.com/Product/p001%5C2-2响应HTTP错误400 - 错误请求.我怎样才能弄清楚?
我需要编码一个包含点字符"."的网址.它是一个ASP.NET MVC路由,但url包含一个".".有办法吗?
例如,我正在尝试获取此URL:"/ Products/Beverages/Drink.Best/Teste"
有个 "." 在...那我需要编码...这可能吗?
谢谢!
这是我用来插入表单的查询字符串:
team,site,week,day,date,o:team,line,points,o:points@season=2011
Run Code Online (Sandbox Code Playgroud)
这是传递给网站的结果字符串:
team%2Csite%2Cweek%2Cday%2Cdate%2Co%3Ateam%2Cline%2Cpoints%2Co%3Apoints%40season%3D2011
Run Code Online (Sandbox Code Playgroud)
我知道R是一种非常强大的语言.是否有任何功能可以为我编码?我想我可以编写一个模拟这个输出的函数,但我不想重新发明轮子.
任何帮助将不胜感激.
最近期的文件urllib中指出:
在版本3.7中更改:从RFC 2396移至RFC 3986以引用URL字符串."〜"现在包含在保留字符集中.
为什么会这样?在RFC 3986中,~不是保留字符:
Run Code Online (Sandbox Code Playgroud)reserved = gen-delims / sub-delims gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@" sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
明确地在下一节中,它被包含为一个未保留的字符:
2.3.未保留的角色
URI中允许但没有保留目的的字符称为unreserved.这些包括大写和小写字母,十进制数字,连字符,句点,下划线和波浪号.
Run Code Online (Sandbox Code Playgroud)unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
此外,后来,RFC声明(强调我的):
例如,对应于波浪号("〜")字符的八位字节通常由较旧的 URI处理实现编码为"%7E" …
我有这个用于登录请求的函数。
private login(params: LoginParams): Promise<any> {
const loginHeaders: HttpHeaders = new HttpHeaders()
.set('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
.set('site', 'first');
const loginCredentials = new HttpParams()
.set('j_username', params.username)
.set('j_password', params.password);
const requestUrl = this.appConfig.baseUrl + 'restoftheurl';
return this.http
.post(requestUrl, loginCredentials.toString(),
{headers: loginHeaders, responseType: 'text'})
.toPromise();
}
Run Code Online (Sandbox Code Playgroud)
如果密码中有一个加号 (+),它会被编码为一个空格符号,然后请求将失败,因为这是一个错误的凭证。如何保留加号?我究竟做错了什么?
我在python 2.7中有关于urlencode的问题:
>>> import urllib
>>> import json
>>> urllib.urlencode(json.dumps({'title':"hello world?",'anonymous':False,'needautocategory':True}))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/urllib.py", line 1280, in urlencode
raise TypeError
TypeError: not a valid non-string sequence or mapping object
Run Code Online (Sandbox Code Playgroud) 如果我将http://localhost:9000/space testURL 放到Web浏览器的地址栏中,它会调用服务器http://localhost:9000/space%20test.
http://localhost:9000/specÁÉÍtest也将被编码为http://localhost:9000/spec%C3%81%C3%89%C3%8Dtest.
如果将编码的URL放到地址栏(即http://localhost:9000/space%20test和http://localhost:9000/spec%C3%81%C3%89%C3%8Dtest),它们保持不变(它们不会被双重编码).
是否有任何Java API或库执行此编码?URL来自用户,因此我不知道它们是否已编码.
(如果没有,那么%在输入字符串中搜索是否足够并且如果找不到则编码,或者是否有任何特殊情况这不起作用?)
编辑:
URLEncoder.encode("space%20test", "UTF-8")返回space%2520test不是我想要的,因为它是双重编码的.
编辑2:
此外,浏览器处理部分编码的URL,例如http://localhost:9000/specÁÉ%C3%8Dtest,没有对它们进行双重编码.在这种情况下,服务器接收到以下网址:http://localhost:9000/spec%C3%81%C3%89%C3%8Dtest.它与编码形式相同...specÁÉÍtest.
用户在文本输入中向我的网站提供正确转义的URL和原始URL; 例如,我认为这两个URL是等价的:
https://www.cool.com/cool%20beans
https://www.cool.com/cool beans
Run Code Online (Sandbox Code Playgroud)
现在,我希望<a>稍后在查看此数据时将这些标记呈现为标记.我被困在编码给定文本和获取这些链接之间:
<a href="https://www.cool.com/cool%2520beans"> <!-- This one is broken! -->
<a href="https://www.cool.com/cool%20beans">
Run Code Online (Sandbox Code Playgroud)
或者不编码并得到这个:
<a href="https://www.cool.com/cool%20beans">
<a href="https://www.cool.com/cool beans"> <!-- This one is broken! -->
Run Code Online (Sandbox Code Playgroud)
从现代浏览器的用户体验角度出发,最好的方法是什么?我在对输入进行解码传递或上面列出的第二个选项(我们不对href属性进行编码)之间徘徊.
我正在尝试学习Python,所以我想首先尝试查询IMDB以对照IMDB检查我的电影收藏;一切顺利
我所坚持的是如何处理名称中的特殊字符,以及如何将名称编码为URL会尊重的名称。
例如我有电影 Bru?no
如果使用urllib.parse.quoteget 对字符串进行编码 - Bru%CC%88no 这意味着当我使用OMDBAPI查询IMDB时,找不到电影。如果我通过OMDBAPI网站进行搜索,则它们会将名称编码为,Br%C3%BCno并且此搜索有效。
我假设编码使用的是其他标准,但是我无法解决需要做的事情
urlencode ×10
python ×3
html ×2
python-3.x ×2
angular ×1
asp.net-mvc ×1
c# ×1
gmail ×1
http ×1
java ×1
json ×1
omdbapi ×1
python-2.7 ×1
r ×1
url ×1
url-routing ×1