有没有办法url编码整个URL查询字符串而不尝试urlencode每个单独的查询字符串参数.现在我不得不用这样的东西重建查询字符串:
foreach (string x in Page.Request.QueryString.Keys)
{
sQueryString += x + "=" + Server.UrlEncode(Request.Params.Get(x)) + "&";
}
Run Code Online (Sandbox Code Playgroud) 我在CakePHP上相当新,因为有一些基本的东西,我曾经用Zend Framework做的,我用Cake打败了.
我正在开发一个项目,我必须将命名参数传递给控制器/动作.设置路由并传递参数非常简单,我的问题是当参数是urlencoded网址时.
例如:http://www.cakephp.com/controller/action/http%3A%2F%2Fwww.google.com无论控制器和操作设置如何,都会抛出404,但是传递/ controller/action/http: //www.google.com以某种方式工作,唯一的问题是它将http标识为命名参数.换句话说,如果我做/controller/action?url=http://www.google.com它会工作.
我用于此的工作是将值作为base64编码的字符串传递,但它带来了一些限制.例如,如果它是API,则无法保证使用API的系统可以将base64编码为字符串.
无论如何,最好的解决方案仍然是将url编码的字符串传递给命名参数.问题是,为什么CakePHP不接受urlencoded字符串作为参数,为什么它会抛出404?
在此先感谢所有人.
给定一个随机生成的字符串,如何将其转换为URL安全 - 然后"取消转换"它?
PHP的bin2hex功能(参见:http://www.php.net/manual/en/function.bin2hex.php)似乎可以安全地将字符串转换为URL安全字符.该hex2bin函数(参见:http://www.php.net/manual/en/function.hex2bin.php)可能尚未准备好.以下自定义hex2bin函数有时会起作用:
function hex2bin($hexadecimal_data)
{
$binary_representation = '';
for ($i = 0; $i < strlen($hexadecimal_data); $i += 2)
{
$binary_representation .= chr(hexdec($hexadecimal_data{$i} . $hexadecimal_data{($i + 1)}));
}
return $binary_representation;
}
Run Code Online (Sandbox Code Playgroud)
它只适用于函数的输入是有效bin2hex字符串.如果我发送的东西不是由bin2hex它产生的,它就会死掉.我似乎无法在出现错误的情况下抛出异常.
有什么建议我可以做什么?我没有开始使用hex2bin/bin2hex.我需要能够将随机字符串转换为URL安全字符串,然后反转该过程.
我正在尝试编码一个URL,我以前从未这样做过,所以当我没有得到预期的结果时我很困惑.我正在使用CFURLCreateStringByAddingPercentEscapes这个,但返回的内容与任何在线URL编码器/解码器完全不同,例如
-(void)urlEncodedString{
NSString *str = @"\"Hi!! my name is John. \n What's your's?\"";
NSLog([(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)str, NULL, CFSTR("!$&'()*+,-./:;=?@_~"), kCFStringEncodingUTF8) autorelease]);
}
Run Code Online (Sandbox Code Playgroud)
我期待的是:
%5C%22Hi%21%21%20my%20name%图20是%20John.%20%5 CN%20What%-27%20your%-27%3F%5C%22
但相反,我得到:
2i2212yame 0s2ohn3.786691E-27020A2º»åå2our0.0000002
这不可能是正常的.我一直在寻找和尝试一切,我做的方式显然应该工作.谁能指出我正确的方向?
我有一个页面链接来自rss.他们是:断链
http://news.asiaone.com/News/Latest%252BNews/Singapore/Story/A1Story20121220-390687.html
Run Code Online (Sandbox Code Playgroud)
工作环节
http://news.asiaone.com/News/Latest%2BNews/Singapore/Story/A1Story20121220-390687.html
Run Code Online (Sandbox Code Playgroud)
我意识到它的工作原理是将%252B更改为%2B.即时通讯使用PHP.有没有办法在跑步中检测并纠正它?
我想这是一个小问题,但我不得不在这里问,因为我在我的项目中做得不够.当我将字符串传递给另一个控制器中的函数时,它会将空格更改为%20符号.我猜控制器认为字符串作为url传递并编码.但我不知道如何删除它,或者如果可能的话,不要让它将空格更改为%20.这是我使用的代码;
$message="The user name you provided is already in our database";
redirect('admin/add_user/'.$message);
Run Code Online (Sandbox Code Playgroud)
这是我的控制器功能,我收到消息;
public function add_user($message)
{
echo $message;
}
Run Code Online (Sandbox Code Playgroud)
我也试过这个;
public function add_user()
{
echo $this->uri->segment(3);
}
Run Code Online (Sandbox Code Playgroud)
但结果是一样的.这是字符串的输出;
The%20user%20name%20you%20provided%20is%20already%20in%20our%20database
Run Code Online (Sandbox Code Playgroud) 我创建了一个这样的URL查询:
QString normalize(QString text)
{
text.replace("%", "%25");
text.replace("@", "%40");
text.replace("‘", "%27");
text.replace("&", "%26");
text.replace("“", "%22");
text.replace("’", "%27");
text.replace(",", "%2C");
text.replace(" ", "%20");
return text;
}
QString key = "usermail";
QString value = "aemail@gmail.com";
QUrlQuery qurlqr;
qurlqr.addQueryItem(normalize(key), normalize(value));
QString result = qurlqr.toString();
Run Code Online (Sandbox Code Playgroud)
期待的结果是:
usermail=aemail%40gmail.com.
Run Code Online (Sandbox Code Playgroud)
但我收到了:
usermail=aemail@gmail.com
Run Code Online (Sandbox Code Playgroud)
我不知道为什么.你能帮助我吗?
(我在Win7上使用Qt5)
我有一个具有多个选择字段的表单.它正在通过GET方法.表单生成的请求参数示例:
action=not-strummed&action=not-rewarded&keywords=test&page=2
Run Code Online (Sandbox Code Playgroud)
请注意,有两个"动作"参数.这是因为多重选择而发生的.
我想做的是:
该urllib.urlencode()是没有足够的智慧来从列表中的网址参数.
例如:
{
"action": [u"not-strummed", u"not-rewarded"]
}
Run Code Online (Sandbox Code Playgroud)
urllib.urlencode()将此dict转换为:
action=%5Bu%27not-strummed%27%2C+u%27not-rewarded%27%5D
Run Code Online (Sandbox Code Playgroud)
这是完全错误和无用的.
这就是为什么我写这个迭代代码来重新生成url参数.
Run Code Online (Sandbox Code Playgroud)parameters_dict = dict(self.request.GET.iterlists()) parameters_dict.pop("page", None) pagination_parameters = "" for key, value_list in parameters_dict.iteritems(): for value in value_list: pagination_item = "&%(key)s=%(value)s" % ({ "key": key, "value": value, }) pagination_parameters += pagination_item
它运作良好.但它并没有涵盖所有可能性,它绝对不是非常pythonic.
从列表中创建url参数有没有更好(更pythonic)的想法?
谢谢
我正在使用带URL编码的mailto链接来填充电子邮件,我想将电子邮件正文中的一些文本设为粗体.我已经尝试过使用HTML标签和星号,谷歌搜索没有提供任何有用的信息.可能吗?
我正在编写一个Chrome扩展,需要专门使用Outlook.
这是我编码的一个例子:
"mailto:xyz@example.com?Subject=Hello&Body=This%20should%20be%20bold!"
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
我正在使用python请求包从API获取结果,并且URL包含+登录。但是当我使用request.get时,请求失败,因为API无法理解+号。如果我用%2B(URI编码)替换+号,该请求将如何成功。
有没有办法编码这些字符,以便在将URL传递给请求包时对URL进行编码
Error: test user@gmail.com does not exist
API : https://example.com/test+user@gmail.com
Run Code Online (Sandbox Code Playgroud) urlencode ×10
encoding ×2
php ×2
python ×2
urldecode ×2
ascii ×1
asp.net ×1
cakephp ×1
codeigniter ×1
django ×1
email ×1
html ×1
html-email ×1
iphone ×1
objective-c ×1
param ×1
qt ×1
query-string ×1
string ×1
urllib ×1