今天,我查看了facebook.com的HTML代码,发现了类似的内容:
<input type="hidden" value="€,´,€,´,水,Д,Є" name="charset_test"/>
它在<form>...</form>
内重复了两次。
知道这段代码可能有用 - 某种服务器端客户端字符集检测?据我所知,浏览器字符集无论如何都是在HTTP请求中传输的(“Accept-Charset”标题)。
答案 0 :(得分:4)
知道这段代码可能对什么有用 - 某种服务器端客户端字符集检测?
显然是这样。
欧元符号对于字符集检测非常有用,因为有很多编码方式:
据我所知,浏览器字符集无论如何都是在HTTP请求中传输的(“Accept-Charset”标题)。
假设在HTTP Content-Type
标头中传输,但这并不意味着用户代理实际上是正确的。
答案 1 :(得分:3)
我猜他们在接收脚本中对此进行匹配,以确保客户端将请求正确编码为UTF-8,甚至可能因为他们知道期望的字符,即可实时检测实际编码。
如果我没记错的话 - 我必须处理一次 - 在某些情况下IE6中的表单编码存在问题。
答案 2 :(得分:0)
€,´,€,´,水,Д,Є
我猜某些浏览器发送€
与€
相同,´
与´
相同,
所以他们可以检查像charset_test [0] == charset_test [2]和charset_test [1] == charset_test [3]
对于其他角色,我不知道。水可能测试CJK。
答案 3 :(得分:0)
正如Pekka所说,这是为了能够检测到请求字符集。 HTTP协议不提供指定请求的字符集的方法。因此,必须依赖协议之外的约定。通常浏览器是可预测的,但这种技巧是100%确定的唯一方法。