Php Facebook字符集检测机制?

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,甚至可能,因为他们知道预期的字符是什么,以便动态检测实际编码 如果我

今天,我查看了facebook.com的HTML代码,发现如下内容:

<input type="hidden" value="€,´,€,´,水,Д,Є" name="charset_test"/>

它在
中重复了两次


你知道这段代码对服务器端客户端字符集检测有用吗?据我所知,浏览器字符集仍在HTTP请求中传输(“接受字符集”标题)。

我猜他们在接收脚本中匹配了这一点,以确保客户端发送的请求正确编码为UTF-8,甚至可能,因为他们知道预期的字符是什么,以便动态检测实际编码

如果我没记错的话——我曾经处理过一次——IE6中的表单编码在某些情况下会出现问题

&euro;,&acute;,€,´,水,Д,Є
我猜一些浏览器发送
&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这样做是因为他们被各种各样的客户访问,他们需要确保他们的编码通常是正确的。