Php Facebook字符集检测机制?
今天,我查看了facebook.com的HTML代码,发现如下内容:Php Facebook字符集检测机制?,php,html,forms,facebook,character-encoding,Php,Html,Forms,Facebook,Character Encoding,今天,我查看了facebook.com的HTML代码,发现如下内容: <input type="hidden" value="€,´,€,´,水,Д,Є" name="charset_test"/> 它在…中重复了两次 你知道这段代码对服务器端客户端字符集检测有用吗?据我所知,浏览器字符集仍在HTTP请求中传输(“接受字符集”标题)。我猜他们在接收脚本中匹配了这一点,以确保客户端发送的请求正确编码为UTF-8,甚至可能,因为他们知道预期的字符是什么,以便动态检测实际编码 如果我
<input type="hidden" value="€,´,€,´,水,Д,Є" name="charset_test"/>
它在…
中重复了两次
你知道这段代码对服务器端客户端字符集检测有用吗?据我所知,浏览器字符集仍在HTTP请求中传输(“接受字符集”标题)。我猜他们在接收脚本中匹配了这一点,以确保客户端发送的请求正确编码为UTF-8,甚至可能,因为他们知道预期的字符是什么,以便动态检测实际编码 如果我没记错的话——我曾经处理过一次——IE6中的表单编码在某些情况下会出现问题
€,´,€,´,水,Д,Є
我猜一些浏览器发送&euro代码>与€
和´相同代码>与'
相同
所以他们可以像charset\u test[0]==charset\u test[2]和charset\u test[1]==charset\u test[3]那样进行检查
对于其他角色,我没有线索。水 可能测试CJK。正如Pekka所说,这是为了能够检测请求字符集。HTTP协议没有提供指定请求字符集的方法。因此,人们不得不依赖议定书之外的公约。一般来说,浏览器是可预测的,但这个技巧是100%确定的唯一方法
另见:
你知道这段代码对服务器端客户端字符集检测有用吗
显然是这样
欧元符号对于字符集检测非常有用,因为有很多种编码方式:
- UTF-8中的E2 82 AC
- windows-1251中的88
- 其他windows-125x编码中的80
- ISO-8859-7、-15和-16中的A4
- GB18030中的A2 E3
- 85 40轮班JIS
- 等等
据我所知,浏览器字符集正在HTTP请求中传输(“接受字符集”头)
它应该在HTTP内容类型
标题中传输,但这并不意味着用户代理实际上正确无误。谢谢,我要去谷歌看看IE6相关的表单问题。我可能错了,但我认为这是关于模棱两可的编码(例如,当内容类型
标题表示与内容类型
元标记不同的内容时)。无论如何,我认为Facebook这样做是因为他们被各种各样的客户访问,他们需要确保他们的编码通常是正确的。