欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

关于URL中的%十六进制数 服务器是如何解析的

程序员文章站 2022-05-16 09:57:14
...
刚才想起了经藏见到的URL中的%十六进制数,看了一些问什么要采用这种编码的解答,这点明白了。。网上说是为了兼容某些只能支持ASCII码的设备。感觉这样的解释有点牵强,大家觉得呢。。。

我的疑惑是:对于这样的十六进制数,服务器是如何解析这样的URL的。服务器如何判断这样的十六进制数是表示什么编码的?
%B7%FE%CE%F1%C6%F7%C8%E7。。就像这样一个串,服务器如何解析它是UTF8编码还是GBK或者GB2321的。。。


回复讨论(解决方案)

urldecode
UTF-8和GBK的编码还是有区别的,从特征码来识别。

可以具体解释下有什么区别吗?

url编码,将由web服务器隐式的执行urldecode进行解码
至于传递的是什么,需由应用程序解释

这个和服务器没有关系。是浏览器判读编码,进行统一相同的urlencode处理的吧。猜的,水娃一个

恩恩。。明白是应用程序的问题了。。但还是不知道如何判断编码格式的。。另外再提一个问题,像这种编码,在客户端应该是用JS实现的,到后台的时候用后台代码解析,这就意味着两端的编码要统一,这个不难做到,还是那个问题,如何判断是什么编码的?

不同的浏览器,在URL地址中传中文,会有不同的结果。有些是GBK,有些是UTF-8,为了防止由于浏览器的自动化所带来的不便,中文最要先用urlencode处理一下,接收端用urldecode来处理。
PHP有检测字符集的方法,但是不是很准,不能过于期望。