我需要使用将在 BusyBox Ash、Dash、Bash 和 ZSH 中运行的 shell 函数对字符串进行 URL 编码。
\n\n它将在不同的 Docker 容器中运行,因此安装尽可能少的依赖项会更好。
\n\n笔记:
\n\n问题“在 bash 脚本中对字符串进行 URL 编码”要求提供特定于 Bash 的脚本,唯一提供的答案取决于容器上安装的 PHP。
问题“如何为curl命令对数据进行urlencode? ”特定于curl,但肯定对非特定答案开放。然而,这 25 个答案似乎都不适用。那里的答案之一只能将数据发送到curl,而有些特定于bash或ksh,其他一些则需要Perl , PHP , Python , Lua , NodeJS , Ruby , gridsite -clients,uni2ascii,jq,awk或sed安装。其中之一不需要额外的依赖项,但不保留a、1和 等字符~。
我期望得到什么:
\n\n$> urlencode \'/\'\n%2f\n\n$> urlencode \'\xc3\xa7\'\n%c3%a7\n\n$> …Run Code Online (Sandbox Code Playgroud) 我进行了建议的更改,但仍然收到类似的错误:
{“error”:“invalid_request”,“error_description”:“无效的授权类型”}
如果 url 编码设置不正确,则可能会发生此错误。更新后的代码如下 任何帮助将不胜感激!
<?php
$client_id = '...';
$redirect_uri = 'http://website.com/foursquare2.php';
$client_secret = '...';
$code = $_REQUEST['code'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_URL, "https://id.shoeboxed.com/oauth/token");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'grant_type' => 'authorization_code',
'code' => $code,
'client_id' => $client_id,
'client_secret' => $client_secret,
'redirect_uri' => $redirect_uri
));
$response = curl_exec($ch);
$err = curl_error($ch);
curl_close($ch);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
Run Code Online (Sandbox Code Playgroud) 我想创建一个查询字符串,但不编码特殊字符,例如@,!或?。
这是我的代码:
payload = {"key": "value", "key2": "value2",
"email": "test@hello3.ch", "password": "myPassword54321!?"}
print(urllib.parse.urlencode(payload))
Run Code Online (Sandbox Code Playgroud)
现在我得到的输出是:
密码=myPassword54321%21%3F&email=test%40hello3.ch
我怎样才能使我的输出看起来像这样:
密码=myPassword54321!?&email=test@hello3.ch
我需要对以下字符进行 URL 编码。
| 钥匙 | 编码 |
|---|---|
| Space | %20 |
| 和(字面意思) | %26 |
为此,我提出了以下代码。 (我需要使用,var因为我的目标是较旧的浏览器。)
var word = "Windows and Mac"; // This can be anything
word = word.split(" ").join("%20");
word = word.split("and").join("%26");
Run Code Online (Sandbox Code Playgroud)
但是,此代码存在一些问题。
还有其他方法可以满足这些要求吗?它还需要在较旧的浏览器(如 IE)上运行。
我有一个用例,我将页面焦点设置为特定元素(在它之前有一个锚点).当用户未登录时,会有重定向到登录页面,登录后,用户将被重定向到相关页面,并对URL进行编码.
我看到表单链接#target的URL按预期工作(关注元素),而url编码的链接链接%23target则没有.这是预期的行为吗?
编辑:如果这是预期的行为,是否有工作专注于目标?就像在,围绕url编码的方式?
编辑添加更多信息:
假设有代码
page1.html
... html before the anchor ...
<a name="test">Some code</a>
... html after the anchor ...
Run Code Online (Sandbox Code Playgroud)
我正在以page1.html%23test访问该页面.这与page1.html #test的工作方式不同.是否有一个jQuery方法来实现它?即使在url编码后,location.hash还会包含测试吗?我无法控制更改网址编码.
编辑:
因为我知道在页面被重定向后我想去哪个命名锚,我做了一个
window.location.hash = namedAnchor
Run Code Online (Sandbox Code Playgroud)
解决问题.只有在客户成功登录时才会输出此JS行.解决了我的问题,虽然不是我想要的通用答案.我正在寻找一种避免在url编码中转义#的方法.
我必须从Iphone应用程序将数据发布到php页面,所以我需要正确编码参数,转换特殊字符...
特别是我需要发送iPhone的UDID.
我在网上找到了许多帮助编码String作为参数传递,但我得到一个奇怪的错误.
我正在使用这个功能:
- (NSString *)URLEncodeString:(NSString *)string {
NSString *result =
(NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)string, NULL, CFSTR("'\"?=&+<>;:-"), kCFStringEncodingUTF8);
return [result autorelease];}
Run Code Online (Sandbox Code Playgroud)
它似乎是正确的,但当我使用它时,结果不是我所期望的.
这是代码:
UIDevice *device = [UIDevice currentDevice];
NSString *uniqueIdentifier = [device uniqueIdentifier];
NSLog(uniqueIdentifier);
NSLog([self URLEncodeString:uniqueIdentifier]);
Run Code Online (Sandbox Code Playgroud)
这是我点击此代码时生成的日志:
2010-06-23 21:58:51.671 provaNavigation[2343:20b] 00000000-0000-1000-8000-0013775CE6D2
2010-06-23 21:58:51.672 provaNavigation[2343:20b] 0000000010003900009080176010001273086780001283520013775CE6D2
Run Code Online (Sandbox Code Playgroud)
然后再次:
2010-06-23 21:59:25.614 provaNavigation[2343:20b] 00000000-0000-1000-8000-0013775CE6D2
2010-06-23 21:59:25.615 provaNavigation[2343:20b] 000000001000390000908192801000-18000912258750013775CE6D2
Run Code Online (Sandbox Code Playgroud)
然后再次:
2010-06-23 21:59:40.848 provaNavigation[2343:20b] 00000000-0000-1000-8000-0013775CE6D2
2010-06-23 21:59:40.849 provaNavigation[2343:20b] 000000001000390000908866081000-18000912239630013775CE6D2
Run Code Online (Sandbox Code Playgroud)
然后再次...
我每次都会获得不同的值,并且永远不会使用正确的%编号进行更正.
显然答案是否定的......对吗?我问的原因是因为我在XML中为Android应用程序定义了这个字符串:
<string name="foo"><![CDATA[<html><body><p>This%20is%20a%20test</p></body></html>]]></string>
Run Code Online (Sandbox Code Playgroud)
我对字符串的所有操作都是读取它,并在HTML视图中显示.我不会期望%20s被解释,但它们是.这是正确的行为,还是Android通常是错误的?
我试图获取可能包含特殊字符和表情符号的UITextField的内容,并将其转换为我可以在GET请求中传递给PHP服务的内容.
如果我根本不对字符串进行编码,那么emojis就会很好地显示(我可以在数据库中看到它们并且它们会正确地回复给我)...但是如果我添加了特殊的字符(〜!@#$%等等) .)GET请求扼流圈.
所以我通过url编码器运行字符串:
[commentText stringByAddingPercentEscapesUsingEncoding:NSNonLossyASCIIStringEncoding];
Run Code Online (Sandbox Code Playgroud)
我正在使用NSNonLossyASCIIStringEncoding来正确地运行emojis,这有效,但使用它来编码会返回一个nil字符串.事实上,唯一没有返回nil的编码是UTF8,但是这会使用百分比转义来扩展表情符号unicode.
我该怎么做呢?我是否必须为此案例编写自己的字符串替换,或者是否有iOS方法可以实现,我没有看到?
干杯,
克里斯
我一直在努力将希腊字母作为URL中的参数传递(例如http://localhost/test.html?text =Καλημέρα)
出于这个原因,我创建了一个简单的html:
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<body>
<p id="text"></p>
<script type="text/javascript">
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}
var i = getQueryVariable("text");
document.getElementById("text").innerHTML = i;
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然而,当我从浏览器打开网站时,javascript似乎无法正确处理输入参数并将其打印为希腊文本
这是我在浏览器窗口中获得的内容:
%CE%9A%CE%B1%CE%BB%CE%B7%CE%BC%CE%AD%CF%81%CE%B1
而不是Καλημέρα.
我认为这是一个编码的问题,这就是为什么我在html的顶部塑造了一个UTF-8语句.你能告诉我如何正确传递"希腊语"作为网址输入吗?
我在django中创建了一个api,其中我有一个参数(state_name),并且state_name的值可以在其值中包含'&',这会导致某些问题?
例如,如果我的网址是这样的
http://localhost:8080/api?state_name=jammu&kashmir&value=2
Run Code Online (Sandbox Code Playgroud)
所以在上面的例子中,当我尝试从url中获取值时,它只使用state_name的值'jammu'并将kashmir视为参数?
如何在django中解决此问题?
urlencode ×10
encoding ×2
html ×2
javascript ×2
nsstring ×2
objective-c ×2
android ×1
cdata ×1
curl ×1
django ×1
html-encode ×1
ios ×1
iphone ×1
linux ×1
php ×1
posix ×1
post ×1
python ×1
python-3.x ×1
rest ×1
shell ×1
url ×1
url-encoding ×1
urllib ×1
xml ×1