【问题标题】:What are the values that appear at the address bar?地址栏上显示的值是什么?
【发布时间】:2015-08-25 01:14:14
【问题描述】:

我正在开发一个将输入字符串从日语翻译成英语的网站。

这个网站有两个文本字段和一个按钮来提交字符串进行翻译。

但是当我点击按钮时,我可以在地址栏中看到某种以 % 分隔的十六进制值。我只是想知道,这些十六进制值是输入字符串的值吗?为什么它们用 % 分隔?

是否有任何规则将由空格分隔的值转换为十六进制并由 % 分隔?

前- localhost/translator/?hl=ja#ja/en/%E6%9C%AC%E6%97%A5%E3%80%81%20%E3%83%97%E3%83%AC%EF%BC% 95S%E3%83%91%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E5%AE%9F%E6%96%BD%E3%81%97% E3%81%BE%E3%81%99%2013%3A30%EF%BD%9E%E3%80%82%EF%BC%88%E6%9C%AC%E7%95%AA%EF%BC% 9A6%2F17%EF%BC%88%E6%B0%B4%EF%BC%89

期待您的回答。

【问题讨论】:

    标签: php web hex type-conversion translate


    【解决方案1】:

    您所看到的称为URL Encoding。它允许 URL 中不合法的字符仅由合法字符表示。

    你是对的,它们是十六进制数字。

    例如,如果您想在 URL 参数中表示 # 字符,您可以使用 %23 来执行此操作。如果您只是将# 字符放在那里,它将被解释为正在请求的页面上的锚目标,这不是您想要的。

    所以你看到的是你的表单输入被转换成这些十六进制代码。为什么,如果没有看到您的代码和您在表单中输入的实际数据,我不确定。不过,您可以通过对表单操作使用 POST 而不是 GET 来避免它。

    【讨论】:

      【解决方案2】:

      1.地址栏上用%分隔的某种十六进制值:

      浏览器通过UTF-8将您的输入数据转换为URL字符串 编码。这是因为,在作为 URL 字符串发送之前,它必须 删除与标准 URL 关键字冲突的字符。

      例如:“?” 用于分隔 HTTP 请求中的 URI 和参数。所以如果你的 输入有“?”这成为一个问题。因为服务器不知道 在哪里拆分 URI 和参数。

      此外,您似乎正在执行 HTTP GET 请求。但我认为你最好发送POST 请求。

      您可以避免看到这个冗长的地址。

      您输入的长度有[浏览器]的限制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-21
        • 2021-04-04
        • 2015-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多