关于URL中的%十六进制数 服务器是如何解析的
程序员文章站
2022-05-16 09:57:14
...
刚才想起了经藏见到的URL中的%十六进制数,看了一些问什么要采用这种编码的解答,这点明白了。。网上说是为了兼容某些只能支持ASCII码的设备。感觉这样的解释有点牵强,大家觉得呢。。。
我的疑惑是:对于这样的十六进制数,服务器是如何解析这样的URL的。服务器如何判断这样的十六进制数是表示什么编码的?
%B7%FE%CE%F1%C6%F7%C8%E7。。就像这样一个串,服务器如何解析它是UTF8编码还是GBK或者GB2321的。。。
我的疑惑是:对于这样的十六进制数,服务器是如何解析这样的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有检测字符集的方法,但是不是很准,不能过于期望。
上一篇: 从MySQL数据库表中来检索数据并不难