urlencode 相关问题

“URL编码”或“百分比编码”文本意味着对其进行编码以便在URL中使用。某些字符在URL中按原样使用时无效,并且在URL中出现时会进行URL编码(百分比编码)。

encodeURIComponent 的结果在服务器端未正确解码

我正在努力正确编码/解码 JSON 字符串,以便通过 GET 请求中的查询字符串发送。 ...</desc> <question vote="0"> <p>我正在努力正确编码/解码 JSON 字符串,以便通过 GET 请求中的查询字符串发送。</p> <pre><code>&lt;html&gt; &lt;head&gt; &lt;script type=&#34;text/javascript&#34;&gt; function executeRequest(applyUriEncode) { var json = &#39;{&#34;foo&#34;:&#34;💀🍕⚡💎&amp;🎁❤很久很久以前&#34;}&#39;; var xmlhttp = new XMLHttpRequest(); xmlhttp.open(&#39;GET&#39;, &#39;https://example.com/test.php?json=&#39;+(applyUriEncode ? encodeURIComponent(json) : json), false); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 &amp;&amp; xmlhttp.status == 200) { console.log(&#34;applyUriEncode: &#34;+(applyUriEncode ? &#34;true\n&#34; : &#34;false\n&#34;)); console.log(xmlhttp.responseText+&#34;\n&#34;); } }; xmlhttp.send(); } &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;button onClick=&#34;executeRequest(true);&#34;&gt;Submit encoded&lt;/button&gt; &lt;button onClick=&#34;executeRequest(false);&#34;&gt;Submit unencoded&lt;/button&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <pre><code>&lt;?php // test.php echo $_GET[&#39;json&#39;]; </code></pre> <p>点击<pre><code>Submit encoded</code></pre>和<pre><code>Submit unencoded</code></pre>时的输出:</p> <pre><code>applyUriEncode: true {&#34;foo&#34;:&#34;💀ðŸ•âš¡ðŸ’Ž&amp;ðŸŽâ¤å¾ˆä¹…很久以å‰&#34;} applyUriEncode: false {&#34;foo&#34;:&#34;💀🍕⚡💎 </code></pre> <p>期望的输出是</p> <pre><code>{&#34;foo&#34;:&#34;💀🍕⚡💎&amp;🎁❤很久很久以前&#34;} </code></pre> <p>我需要对 JSON 进行编码,否则,特殊字符(例如 <pre><code>&amp;</code></pre>)会破坏字符串。然而,PHP 似乎没有正确解码 <pre><code>encodeURIComponent</code></pre> 的结果。我在服务器端尝试了 <pre><code>urldecode</code></pre>,但这并没有改变任何事情(输出保持不变)。</p> <p>我觉得这是一个基本问题,在 StackOverflow 上应该有答案,但我找不到。我发现了大量具有类似问题的问题,但没有一个问题能让我找到针对这个特定问题的解决方案。</p> </question> <answer tick="false" vote="0"> <p>您遇到的问题与字符编码有关。当您在 JavaScript 中使用 <pre><code>encodeURIComponent</code></pre> 时,它会正确对 JSON 字符串(包括 Unicode 字符)进行百分比编码。但是,当 PHP 接收查询字符串时,它不会自动将百分比编码的 Unicode 字符解码回其原始形式。</p> <p>要解决此问题,您需要确保 PHP 将传入数据解释为 UTF-8,然后使用 <pre><code>urldecode</code></pre> 解码百分比编码的字符串。以下是如何修改 PHP 代码以获得所需的输出:</p> <pre><code>&lt;?php // test.php // Get the raw, percent-encoded JSON string from the query parameter $encodedJson = $_GET[&#39;json&#39;]; // Manually decode the percent-encoded string $decodedJson = urldecode($encodedJson); // Ensure that the string is treated as UTF-8 $decodedJson = mb_convert_encoding($decodedJson, &#39;UTF-8&#39;, &#39;UTF-8&#39;); // Output the decoded JSON string echo $decodedJson; </code></pre> <p>此代码片段假设您的 PHP 环境配置为使用 UTF-8 作为默认字符编码。如果不是,您可能需要在脚本开头使用 <pre><code>mb_internal_encoding(&#39;UTF-8&#39;)</code></pre> 将字符编码显式设置为 UTF-8。</p> <p>此外,需要注意的是,当您在查询字符串中发送 JSON 数据时,应始终使用 <pre><code>encodeURIComponent</code></pre> 对 JSON 字符串进行编码。这是因为查询字符串具有某些保留字符(如 <pre><code>&amp;</code></pre>、<pre><code>=</code></pre>、<pre><code>+</code></pre>、<pre><code>?</code></pre> 等),如果不进行编码,可能会破坏 URL 的结构。 <pre><code>encodeURIComponent</code></pre> 函数确保这些字符被安全编码,这样它们就不会干扰 URL 的格式。</p> <p>在客户端,当将 <pre><code>encodeURIComponent</code></pre> 标志设置为 <pre><code>applyUriEncode</code></pre> 时,您的 JavaScript 代码使用 <pre><code>true</code></pre> 是正确的。始终使用编码版本在查询字符串中发送数据,以避免特殊字符出现问题。</p> </answer> </body></html>

回答 0 投票 0

ASP.NET Core 中的 URL 编码和解码

HttpContext.Current.Server.UrlEncode 这仅适用于 .NET Framework。如何在 ASP.NET Core 中对 URI 参数进行编码或解码?

回答 7 投票 0

使用 PHP 的 TextLocal SMS 网关 API,无需 rawurlencode

我正在使用 TextLocal.in API 发送短信,但这就是它的样子,因为我的短信模板中存在换行符。 看起来像这样。 请查看 $message 变量的内容。如果我什至

回答 1 投票 0

如何在 JavaScript 中对 UInt8Array 进行 url 编码?

如何在 JavaScript 中对 UInt8Array 进行 urlencode?使用encodeURIComponent不起作用,例如 encodeURIComponent((new Uint8Array([72,101,108,108,111,32,87,111,114,108,100]))); 我期望:

回答 1 投票 0

当浏览器打开带有参数的 URL 时,它会挂起并且 Java 应用程序(使用 UrlRewrite)抛出 RequestRejectedException:URL 包含“;”

有一个Java、Spring、Tomcat web应用程序。 其中一部分负责使用生成的activationUrl(由唯一令牌组成)向新创建的用户发送激活电子邮件。电子邮件是cr...

回答 1 投票 0

NodeJS Javascript 中 HttpServerUtility.UrlTokenEncode 的匹配输出

我正在看 dotnet 中的一个示例,如下所示:https://dotnetfiddle.net/t0y8yD。 HttpServerUtility.UrlTokenEncode 方法的输出是: Pn55YBwEH2S2BEM5qlNrq-

回答 2 投票 0

urlopen:属性错误:“字节”对象没有属性“超时”

我正在尝试从 API 打开一个包含波兰字母表字符的 json 文件。我尝试将 url 编码为 utf-8 但仍然出现各种问题。我包括我写的代码...

回答 1 投票 0

express(node js)中的urlencoded无法正常工作

我遇到了以下问题:提交表单时,表单中的数据没有传输,提交表单后,无限加载,没有数据传输 “表示...

回答 1 投票 0

PHP 函数生成无效的 HMAC 签名

我正在努力将 MoonPay 与我的网站集成,但有些东西我不明白。 他们的默认 PHP 代码发布在这里:https://dev.moonpay.com/docs/ramps-sdk-url-signing#how-to-generate-

回答 1 投票 0

Java 中使用斜杠(无需双重编码)和特殊字符对 URI 查询参数进行编码

我有 2 个带有示例输入的字符串变量: 内容:“m/=a” 短信:“TEST123 ~!@#$%^&*()_+{}:<>?” 我需要使用 GET 方法将这两个变量作为查询参数发送。 ...

回答 1 投票 0

在 Specflow 中反序列化查询参数的 JSON json URL 不起作用

如何在 Specflow 中对 url 上的查询参数进行编码?这 GET 调用 API,其中包含搜索选项,场景不断变化为 使用 searchOperator 的情况 = equal, in, like 获取 API 调用 url.com/?

回答 1 投票 0

Python 使用 Google API 转发 Gmail 消息

我正在尝试使用 Google 的 API 客户端转发消息。为了做到这一点,我正在阅读消息,修改它,然后想发送它,但我遇到了一个问题,消息...

回答 1 投票 0

Free Pascal - 将数据发布到 dweet.io,并在 URL 中使用冒号

我正在玩 https://dweet.io/ - 这个概念是您可以发送/发布一些字段/值到 dweet.io,您可以看到直接在那里发布的这些值,甚至将这些数据视为

回答 1 投票 0

URL 片段中的百分比字符必须进行百分比编码吗?

URL 的片段部分从第一个 # 字符到 URL 的末尾。由于保留字符如 %, ?和 & 在片段中没有特殊含义,应该没有必要...

回答 1 投票 0

Swift URL 编码不起作用:我传递了第 1 层和第 2 层参数。此参数无法正常工作

var newURL =“https://media.me.com/i/helabojun/MY_Cover_LAKMan_MB_kanjapani_v.43-44?layer1=[text=INCOMING:&fontSize=76&textColor=#ffffff&textAlign=center&anchor=MC&left=50%...

回答 1 投票 0

如何绕过“注入XSS Payload?

我目前正在学习 XSS 攻击,我想知道 - 如果在 标签中双引号被替换为 " 那么如何注入有效负载。 例如 我目前正在学习 XSS 攻击,我想知道 - 如果在 <input> 标签中双引号替换为 &quot; 那么如何注入有效负载。 例如 <input type="text" value="something"> 但是当我尝试执行这个有效负载时" onmouseover="alert(1)然后最终的有效负载变成如下所示 <input type="text" value="&quot; onmouseover=&quot;alert(1)"> 当我检查代码时,它会以这种格式替换 .replace(/"/g,"&quot;")) 这就是它不执行我的有效负载的原因。即使我尝试过双重编码,但它不起作用 %2522 onmouseover=%2522alert(1) 您使用: %2522 onmouseover=警报(1) 代替: %2522 onmouseover=%2522alert(1) 如果您在传递 HTML 时看到“获取转换为”,则通常意味着应用程序正在正确执行输出转义。一般来说,这意味着网络应用程序构建良好。

回答 2 投票 0

Objective-C 和 Swift URL 编码

我有一个像这样的 NSString: http://www. 但我想把它改成这样: http%3A%2F%2Fwww。 我该怎么做?

回答 13 投票 0

如何用 php 数组替换 url 字符串参数

目前我有这个带有参数的网址。 $filter 是字符串格式并且经过原始编码。是否可以使用数组而不是字符串作为 $filter ?就像 array('groups'=>array('11','...

回答 2 投票 0

有关Base64编码的问题

我有 3 个关于 Base64 的问题: 1)base64编码的目的是二进制转文本。文本不是会以二进制形式通过网络发送吗?那有什么用呢? 2)过去他们使用7位通信

回答 1 投票 0

为什么 JWT 使用 Base64url 编码而不是 Percent-encoding(也称为 URL 编码)

我最近阅读了 JWT 规范,发现它提倡使用 Base64url 来编码 JWT 属性。但是,我不确定为什么选择 Base64url 而不是 Percent-Encoding,特别是...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.