【问题标题】:Encoding $ as ASCII将 $ 编码为 ASCII
【发布时间】:2012-01-27 08:23:30
【问题描述】:

在我的 HTML 文件中,我通过 GET 给 php.ini 赋值。该值如下:'var1$var2'

在我的网址中,显示如下:

/phpmethod.php?q=var1%24var2

我在 ASCII 表中查找了$,发现它的数字是 24。

我也尝试过添加

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

到 html 但结果相同。

我该如何解决?

【问题讨论】:

  • 是的,该值正在被 URL 编码。这通常不是问题。你有什么问题?
  • %24 是您申请urlencode('$') 时得到的。你这样做的具体问题是什么?怎么是错误的结果?
  • php 函数需要$ 而不是%24
  • 哪个php函数需要它?你能举一个你想如何使用它的例子吗?哪里不行?

标签: php html get ascii


【解决方案1】:

使用urldecode 将值转换回发布的值。

通常,您不需要这些 - 您的 $_GET$_POST 已经被解码,并且将包含 var1$var2,就像用户输入它们一样。

【讨论】:

    【解决方案2】:

    这很正常——应该是这样。 $ 是一个特殊字符,如果包含在 URL 中,则可以具有特殊含义。因此,每当您发送一个包含 $ 的值时,此字符将被转义(urlencoded)为其十六进制值,因此 var1$var2 将是 var1%24var2

    在您的目标页面 (phpmethod.php) 中,您编写 GET['q'] 时,$ 字符会自动 urldecode 并且您将获得原始值 var1$var2,因此您不会需要担心任何事情。

    也被转义的其他字符包括空格 (%20)、/:&amp;? 等。此外,0x7F 以上的所有 Unicode 字符也将被转义。

    您应该只在您明确对数据使用urlencode 的情况下使用urldecode 函数;所以永远不要对$_POST$_GET 值进行urldecode;它们已经被解码,你可能会再次这样做会破坏你的数据。

    【讨论】:

      【解决方案3】:

      您是否尝试过仅传递 var1$var2 并在获取时转义该值?

      我不是 php 编码器,所以如果可行,我现在不会,但我想它应该。

      【讨论】:

        猜你喜欢
        • 2013-02-28
        • 1970-01-01
        • 1970-01-01
        • 2011-06-26
        • 2017-05-26
        • 2020-05-25
        • 1970-01-01
        • 1970-01-01
        • 2011-11-05
        相关资源
        最近更新 更多