地址栏中显示的值是什么?

What are the values that appear at the address bar?

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

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

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

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

前任 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

期待您的回答。

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

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

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

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

1.some 种在地址栏中用 % 分隔的十六进制值:

Browser converts your input data to URL string through UTF-8 encoding. This is because, before sending as a URL string, it has to remove conflicting characters with standard URL keywords.

Ex: '?' is used to separate URI and parameters in a HTTP request. So if your input has '?' this becomes an issue. Because the server doesn't know where to split URI and parameters.

此外,您似乎在执行 HTTP GET 请求。但我认为你最好提出一个 POST 请求。

You can avoid seeing this lengthy address.

There is limitation [by browser] of the length of your input.