为了对URI进行编码,我使用urllib.quote("schönefeld")但是当字符串中存在一些非ascii字符时,它就是Thorws
KeyError: u'\xe9'
Code: return ''.join(map(quoter, s))
Run Code Online (Sandbox Code Playgroud)
我的输入字符串köln, brønshøj, schönefeld等.
当我尝试在Windows中打印语句时(使用python2.7,pyscripter IDE).但是在linux中它会引发异常(我猜平台并不重要).
这就是我想要的:
from commands import getstatusoutput
queryParams = "schönefeld";
cmdString = "http://baseurl" + quote(queryParams)
print getstatusoutput(cmdString)
Run Code Online (Sandbox Code Playgroud)
探索问题的原因:
在urllib.quote(),其实在异常被肆意return ''.join(map(quoter, s)).
urllib中的代码是:
def quote(s, safe='/'):
if not s:
if s is None:
raise TypeError('None object cannot be quoted')
return s
cachekey = (safe, always_safe)
try:
(quoter, safe) = _safe_quoters[cachekey]
except KeyError:
safe_map = _safe_map.copy()
safe_map.update([(c, c) for c in safe])
quoter = …Run Code Online (Sandbox Code Playgroud) 我曾试图遵循的文件,但无法使用urlparse.parse.quote_plus()在Python 3:
from urllib.parse import urlparse
params = urlparse.parse.quote_plus({'username': 'administrator', 'password': 'xyz'})
Run Code Online (Sandbox Code Playgroud)
我明白了
AttributeError:'function'对象没有属性'parse'
我的网站符合XHTML Transitional标准,除了一件事:URL中的&(&符号)按原样写入,而不是&
也就是说,我页面中的所有网址通常都是这样的:
<a href="http://www.foo.com/page.aspx?x=1&y=2">Foo</a>
Run Code Online (Sandbox Code Playgroud)
但是XHTML验证器会生成此错误:
不能生成一般实体"y"的系统标识符
...它希望url像这样写:
<a href="http://www.foo.com/page.aspx?x=1&y=2">Foo</a>
Run Code Online (Sandbox Code Playgroud)
问题是IE和Firefox无法正确处理URL并忽略y参数.如何使此链接正常工作并正确验证?
在我看来,如果浏览器不能使用严格编码的XHTML URL,则无法编写XHTML页面.
你想看到行动吗?查看这两个链接之间的区别(按原样复制和粘贴它们):
http://stackoverflow.com/search?q=ff&sort=newest
Run Code Online (Sandbox Code Playgroud)
和
http://stackoverflow.com/search?q=ff&sort=newest
Run Code Online (Sandbox Code Playgroud) 我有一个PHP项目,我需要在URL的路径中发送一个哈希字符(#).(http://www.example.com/parameter#23/parameter#67/index.php)我认为urlencode允许这样做,将哈希值转换为%23
但是现在我看到,即使是urlencoded哈希也会强制浏览器将所有内容都视为URL片段(或查询).
有没有办法传递哈希值,还是我需要在urlencode之前进行字符替换?
编辑添加(2017年9月19日):
原来我问的是错误的问题.我的问题不是在路径中使用哈希字符(编码它确实有效),而是使用mod_rewrite将其转换为查询字符串.我没能在RewriteRule中重新编码它.我将编辑标题以匹配.
这是我使用的重写规则:
RewriteEngine On
# convert path strings into query strings
RewriteRule "^(.*)/(.*)/hashtags.php" /hashtags.php?parameter_1=$1&parameter_2=$2 [QSA,L]
Run Code Online (Sandbox Code Playgroud)
一旦我添加了B标签,它就能正常工作:
RewriteEngine On
# convert path strings into query strings
RewriteRule "^(.*)/(.*)/hashtags.php" /hashtags.php?parameter_1=$1&parameter_2=$2 [QSA,L,B]
Run Code Online (Sandbox Code Playgroud) 为什么我在尝试urlencode此字符串时收到此错误
>>> callback = "http://localhost/application/authtwitter?twitterCallback"
>>> urllib.urlencode(callback)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/urllib.py", line 1261, in urlencode
raise TypeError
TypeError: not a valid non-string sequence or mapping object
Run Code Online (Sandbox Code Playgroud) 我有一个xml URL文件,其中有空格我想用%20替换空格..怎么做????
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
/** Send URL to parse XML Tags */
URL sourceUrl = new URL(
"http://www.arteonline.mobi/iphone/output.php?gallery=MALBA%20-%20MUSEO%20DE%20ARTE%20LATINOAMERICANO%20DE%20BUENOS%20AIRES");
XMLHandlerartistspace myXMLHandler = new XMLHandlerartistspace();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
Run Code Online (Sandbox Code Playgroud) 我想在控制台应用程序,VB.NET,VS 2010 Beta 2中使用HttpUtility.UrlEncode.
System.Web.HttpUtility.UrlEncode(item)
Run Code Online (Sandbox Code Playgroud)
错误消息:'HttpUtility'不是'Web'的成员.
在这个问题中, Anjisan建议添加对System.Web的引用,如下所示:
但是,我在该位置没有System.Web条目.
.net vb.net urlencode console-application visual-studio-2010
是否有在Dart中进行urlencoding的功能?我正在使用XMLHttpRequest对象进行AJAX调用,我需要将url编码为url.
我在dartlang.org上搜索过,但没有找到任何结果.
我需要从这个URL获取查询字符串/sf/?next=1&value=3,我不想使用request.META.我已经发现有两种方法可以获取查询字符串:
使用urlparse urlparse.urlparse(url).query
使用url编码 使用urlencode并将request.GET params字典传递给它以获取字符串表示.
那么哪种方式更好?我的同事们更喜欢urlencode,但没有提供令人满意的解释.他们声称urlparse在内部调用urlencode,这是我不确定的,因为urlencode存在于urllib模块中.
我有一些使用JavaScript编码的查询文本,但我遇到了一个用例,我可能需要在服务器端编码相同的文本,并且发生的编码不一样.我需要它是一样的.这是一个例子.
我进入"I like food"搜索框并按下search按钮.JavaScript将其编码为%22I%20like%20food%22
假设我在服务器端的请求对象上获得与字符串相同的值.它看起来像这样:"\"I like food\""
当我使用时HttpUtility.UrlEncode(value),结果是"%22I+like+food%22".如果我使用HttpUtility.UrlPathEncode(value),结果是"\"I%20like%20food\""
所以UrlEncode编码我的引号,但使用+空格字符.UrlPathEncode正在编码我的空格但不编码我的转义引号.
我真的需要它来做两件事,否则搜索代码完全对我不利(我无法控制搜索代码).
提示?