我正在处理一个脚本,该脚本通过POST方法从网站上的表单接收数据。编码未知,但我想使用mb_detect_encoding()
来检测收到的字符串的编码。
现在有办法获得有关可能用于发送数据的编码的其他提示吗?浏览器可能会看到该页面位于ISO-8859-1
中,因此也会以该编码发送数据,并可能添加一些HTTP标头以指示格式。
获取字符集提示的典型来源是什么?
答案 0 :(得分:3)
如果您不知道编码,那么您已经输了。您需要确保编码尽可能定义。如果数据来自表单,请使用accept-charset
属性指定已定义的编码;最好是UTF-8:
<form accept-charset='utf-8'>
在您的服务器上,使用mb_check_encoding
确认您收到的数据确实是您所要求的UTF-8编码。如果不是......那取决于你想要做什么。出于所有意图和目的,您手上有随机垃圾数据;是否可以以任何方式挽救,取决于您的情况以及您尝试对数据做些什么。
FWIW,浏览器不发送任何指示他们发送给您的编码。有些浏览器(* cough * old IE * cough *)也不总是遵守accept-charset
属性,除非你强制它编码非ASCII字符;为了这个目的,网站倾向于在其中嵌入一个带有雪人角色的隐藏输入或类似的Unicode-y。
此外,如果浏览器出于某种原因不对UTF-8中的内容进行编码,但尝试发送非ASCII内容,则通常会发送HTML实体。这是你可以尝试检测的东西。