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

时间:2015-06-10 00:47:58

标签: php web hex type-conversion translate

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

此网站有两个文本字段和一个按钮,用于提交字符串以进行翻译。

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

背后是否有任何规则,空格分隔的值被转换为hexadeciaml并以%分隔?

对于前 - 本地主机/翻译/?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

期待您的回答。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

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

  

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

     

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

此外,您似乎正在执行HTTP GET请求。但我认为你做POST请求会更好。

  

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

     

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