今天,我特地到facebook.com的HTML代码,并发现了这样的事情:Facebook字符集检测机制?
<input type="hidden" value="€,´,€,´,水,Д,Є" name="charset_test"/>
它重复<form>...</form>
内两次。
任何想法这个代码可能会有用 - 某种服务器端客户端字符集检测?据我所知,无论如何,浏览器字符集都是通过HTTP请求传输的(一个“Accept-Charset”头文件)。
今天,我特地到facebook.com的HTML代码,并发现了这样的事情:Facebook字符集检测机制?
<input type="hidden" value="€,´,€,´,水,Д,Є" name="charset_test"/>
它重复<form>...</form>
内两次。
任何想法这个代码可能会有用 - 某种服务器端客户端字符集检测?据我所知,无论如何,浏览器字符集都是通过HTTP请求传输的(一个“Accept-Charset”头文件)。
任何想法,这段代码可能是有用的 - 某种服务器端的客户端字符集检测的?
显然是这样。
欧元符号为字符集探测有用窗口-125X编码
据我所知,浏览器的字符集被在HTTP请求无论如何(一个“接收字符集”报头)来发送。
它应该在HTTP Content-Type
头中发送的,但这并不意味着用户代理实际上得到它的权利。
我猜他们在接收脚本中匹配这个,以确保客户端正确地发送了编码为UTF-8的请求,甚至可能是因为他们知道预期的字符,以实时检测实际的编码。
如果我没有记错 - 我不得不处理一次 - 在某些情况下,IE6中的表单编码存在问题。
€,´,€,´,水,Д,Є
我猜有些浏览器发送€
一样€
和´
一样´
,
因此,他们可以检查像charset_test [0] == charset_test [2]和charset_test [1] == charset_test [ 3]
对于其他人物,我不知道。水可能测试CJK。
正如Pekka所说,这是为了能够检测请求字符集。 HTTP协议不提供指定请求字符集的方法。因此,人们必须依赖协议之外的约定。通常浏览器是可预测的,但这个诀窍是百分之百确定的唯一方法。
谢谢,我要去google关于这个IE6相关的表单问题。 – Void 2010-01-06 12:30:38
我可能是错的,但我认为它是关于不明确的编码的东西(即当内容类型标题说明与内容类型META标签不同时)。无论如何,我认为Facebook正在这样做,因为他们正在被各种客户访问,他们需要确保他们的编码是正确的。 – 2010-01-06 12:59:38