当前位置: 首页 > 面试题库 >

urlencode()'星号'(星号)字符

邹嘉荣
2023-03-14
问题内容

我正在测试 PHP urlencode()Java html" target="_blank">java.net.URLEncoder.encode()

爪哇

String all = "";
for (int i = 32; i < 256; ++i) {
    all += (char) i;
}

System.out.println("All characters:         -||" + all + "||-");
try {
    System.out.println("Encoded characters:     -||" + URLEncoder.encode(all, "utf8") + "||-");
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

的PHP

$all = "";
for($i = 32; $i < 256; ++$i)
{
    $all = $all.chr($i);
}

echo($all.PHP_EOL);
echo(urlencode(utf8_encode($all)).PHP_EOL);

除了不是由Java编码并由PHP转换为%2A的“星号”字符,所有这两个函数的字符似乎都以相同的方式编码。哪种行为应该是“正确的”行为(如果有)?

注意:我也尝试rawurlencode()过-没有运气。


问题答案:

可以*在URL中使用(但也可以采用编码形式)。

RFC1738:统一资源定位符(URL)声明以下内容:

保留:

[…]

通常,当八位字节由字符表示并进行编码时,URL具有相同的解释。但是,对于保留字符而言并非如此:对为特定方案保留的字符进行编码可能会更改URL的语义。

因此,仅字母数字, 特殊字符"$-_.+!*'(),"和用于保留目的的保留字符 可以 在URL中 未经编码地使用

另一方面,不需要编码的字符(包括字母数字)可以 在URL的特定于方案的部分内 进行编码 ,只要它们不用于保留目的即可。



 类似资料:
  • 这项任务是在Codingbat上制定的。(https://codingbat.com/prob/p194491): 如果字符串中的每个“*”(星号),如果星号前后都有字符,则返回true。 如何修复我的解决方案,以便使用正则表达式解决此任务? 我的尝试: 我的解决方案对一半以上的测试都是正确的,但并非所有测试都是正确的。

  • 问题内容: 我正在阅读《 OCA / OCP Java SE和程序员I和II学习指南》。在页52​​0上,有一种用于匹配的方法: 现在,在下一页上有一段使用此方法的代码: 根据这本书的结果应该是:true false false false 但是,当我尝试运行它时,出现以下异常: 我的问题是:我错过了设置中的某些内容吗?我需要启用特定功能才能运行此功能吗?还是这本书是错误的?我只为参加Java专业

  • 问题内容: 我想用python制作这张图片! 我输入了这个: 不幸的是,上面的图片似乎产生了由正确数量的点组成的东西,但是每个点星号都彼此间隔开,而不是整体上合理。 有人对我如何实现我想要的东西有聪明的主意吗? 问题答案: 被解析为 因为和运算符具有相同的优先级,并且从左到右分组[ docs ]。您需要添加括号,如下所示: 如果要遍历一系列数字,则使用循环比使用while循环更惯用。像这样: 等效

  • 问题内容: 我正在玩Python 3.5解释器,发现了非常有趣的行为: 尽管我有多年的Python经验,但我从未在文档,示例和任何源代码中都没有看到过。我发现它 非常 有用。 从Python语法的角度来看,这对我来说似乎是合乎逻辑的。函数参数和元组可以使用相同或相似的状态进行解析。 有记录的行为吗?它在哪里记录? 哪些版本的Python具有此功能? 问题答案: 这是PEP-448:附加解包概述,这

  • 问题内容: 我正在使用itertools.chain以这种方式“拉平”列表列表: 这跟说的有什么不同? 问题答案: 是“ splat”运算符:它接受一个列表作为输入,并将其扩展为函数调用中的实际位置参数。 所以如果是,那就等于说 这与传递just显然不同。对于您的情况,您有一个想要拼合的列表列表;什么确实是在所有你传递给它的位置参数,其中每个位置参数是在自己的权利迭代拼接返回一个迭代。 换句话说,

  • 问题内容: 我正在尝试使用嵌套的for循环向用户询问整数,然后程序将输出一个倒置的倒置三角形,其底部带有星号,然后逐渐减小。应该看起来像这样: 我有的代码: 输出此: 我不太确定如何更改我的for循环来完成这项工作,并且我已经尝试了一段时间,因此非常感谢您的帮助。 问题答案: 我的看法是这样的: 这是家庭作业吗(嵌套循环是必需的)?提示:可以轻松地将运算符替换为循环。