问题标签 [percent-encoding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
19 回答
144363 浏览

c++ - 在 C++ 中编码/解码 URL

有谁知道有什么好的 C++ 代码可以做到这一点?

0 投票
2 回答
3739 浏览

apache - mod_rewrite 规则强制执行规范的百分比编码

我们有一个带有动态 URL 方案的 PHP 应用程序,它需要对字符进行百分比编码,甚至是“非保留字符”,例如实际上不需要编码的括号或撇号。应用程序认为以“错误”方式编码的 URL 被规范化,然后重定向到“正确”编码。

但是谷歌和其他用户代理将以不同的方式规范百分比编码/解码,这意味着当 Googlebot 请求页面时,它会要求“错误”的 URL,当它返回到“正确”URL 的重定向时,Googlebot 将拒绝跟随重定向并将拒绝索引该页面。

是的,这是我们这边的一个错误。HTTP 规范要求服务器同等对待百分比编码和非百分比编码的未保留字符。但是现在解决应用程序代码中的问题并不简单,所以我希望通过使用 Apache 重写规则来避免代码更改,这将确保从应用程序的角度“正确”编码 URL , 这意味着撇号、括号等都是百分比编码的,并且空格被编码为+而不是%20

这是一个例子,我想重写第一种形式并最终得到第二种形式:

  • www.splunkbase.com/apps/All/4.x/Add-On/app:OPSEC+LEA+for+Check+Point+(Linux)
  • www.splunkbase.com/apps/All/4.x/Add-On/app:OPSEC+LEA+for+Check+Point+%28Linux%29

这是另一个:

  • www.splunkbase.com/apps/All/4.x/app:Benford's+Law+Fraud+Detection+Add-on
  • www.splunkbase.com/apps/All/4.x/app:Benford%27s+Law+Fraud+Detection+Add-on

这是另一个:

  • www.splunkbase.com/apps/All/4.x/app:Benford%27s%20Law%20Fraud%20Detection%20Add-on
  • www.splunkbase.com/apps/All/4.x/app:Benford%27s+Law+Fraud+Detection+Add-on

如果应用只看到这些 URL 的第二种形式,则它不会发送任何重定向,Google 将能够为该页面编制索引。

我是一个有重写规则的新手,从我对mod-rewrite 文档的阅读中很明显,mod_rewrite 做了一些自动编码/解码,这可能有助于或伤害我想做的事情,尽管不确定。

关于重写规则以处理上述情况的任何建议?我可以为每个特殊字符设置一个规则,因为它们并不多,但是一个规则(如果可能的话)将是理想的。

0 投票
3 回答
685 浏览

php - PHP:比较百分比编码不同的 URI

在 PHP 中,我想比较两个相对 URL 是否相等。问题:URL 的百分比编码可能不同,例如

  • /dir/file+file对比/dir/file%20file
  • /dir/file(file)对比 /dir/file%28file%29
  • /dir/file%5bfile对比 /dir/file%5Bfile

根据RFC 3986,服务器应该以相同的方式对待这些 URI。但如果我==用来比较,我会以不匹配而告终。

所以我正在寻找一个 PHP 函数,它将接受两个字符串并返回它们是否代表相同的 URI(在编码字符中TRUE区分相同字符的编码/解码变体、大写/小写十六进制数字,以及+%20空格),以及FALSE它们是否不同。

我事先知道这些字符串中只有 ASCII 字符——没有 unicode。

0 投票
6 回答
2053 浏览

python - 在 Python 中将十六进制字符串转换为百分比编码的字符串

我有一个字符串。它看起来像s = 'e6b693e6a0abe699ab'

我想在每对字符前面放一个百分号,所以percentEncode(s) == '%e6%b6%93%e6%a0%ab%e6%99%ab'.

有什么好的写作方法percentEncode(s)

(注意,我不在乎未保留的字符不会转换为 ASCII。)

我可以想出很多冗长的方法来做到这一点,但我想要一些简单而漂亮的东西,虽然我对 Python 还很陌生,但如果 Python 不能很好地做到这一点,我会感到惊讶。

0 投票
2 回答
1636 浏览

javascript - 有没有办法从动态创建的面包屑中删除 %20 ?

所以,我在处理这个动态面包屑的文章时遇到了一个问题,如果目录名称中有空格,那么 %20 会被添加到实际可见的面包屑中。会使用decodeURI()函数将其删除还是有更好的方法?

这是js:

如果要使用decodeURI(),它到底会去哪里?此外,更不相关的是,您是否可以在上面的代码中添加一个选项,使目录中的实际页面作为最后一项而不是最后一个目录包含在面包屑中?不是很重要,但我想我也会问。感谢您的任何意见!

0 投票
3 回答
24251 浏览

perl - 使用 Perl,我如何在网络上解码或创建那些 %-encodings?

我需要在我的 Perl 脚本中处理 URI(即百分比)编码和解码。我怎么做?


这是来自官方 perlfaq的一个问题。我们将perlfaq 导入 Stack Overflow

0 投票
4 回答
24192 浏览

javascript - 百分比编码 javascript

是否有一个 javascript 函数接受一个字符串并将其转换为另一个百分比编码的字符串?这样,“This Guy”之类的东西就变成了“This%20Guy”。

谢谢

0 投票
1 回答
2722 浏览

.htaccess - URL 百分比编码不起作用

我正在尝试做一件简单的事情,但没有运气 - 我想在我的 URL 中显示希伯来语/阿拉伯语字符。

例如:我希望 URL 显示一个名为:aאm.php

所以我对中间的 UTF8 字符进行了百分比编码,结果是:a%D7%90m.php. 我已经上传a%D7%90m.php到我的服务器(Apache)并尝试请求页面 www.example.com/a%D7%90m.php 和 www.example.com/aאm.php 但我的服务器响应:

/a%D7%90m.php在此服务器上找不到请求的 URL 。

所以我尝试上传aאm.php(没有百分比编码),但在浏览 www.example.com/a%D7%90m.php 和 www.example.com/aאm.php 时再次失败。

如何解决这个问题?

0 投票
2 回答
750 浏览

html - 对象标签的数据属性是否应该进行百分比编码?

假设我的 Web 应用程序呈现以下标签:

应该data转义属性(百分比编码路径)还是不转义?在我的例子中是这样。我没有找到任何规范。

附录

实际上,我对浏览器插件消费data属性的规范很感兴趣。例如,Adobe Acrobat 插件采用转义和非转义 uri。但是,QWebPluginFactorydata属性视为人类可读的 URI(未转义),这会导致双百分比编码。我想知道这是否是一个错误QWebPluginFactory

0 投票
2 回答
2004 浏览

java - 是否有使用完整百分比编码在 Android 中编码/解码字符串的快速功能?

我想在我的 Android 应用程序中对某些字符串操作使用百分比值编码/解码。我不想使用 URI 编码/解码函数对,因为我想对每个字符进行编码,而不仅仅是在对 URI 进行编码以发出 Web 请求时编码的字符。Android 库或 Java 库中是否有任何内置函数可以做到这一点?

——罗施勒