如何获取有关用于发送表单数据的编码的提示(在PHP中)

我正在处理一个脚本,该脚本通过POST方法从网站上的表单接收数据.编码是未知的,但是我想使用mb_detect_encoding()来检测接收到的字符串的编码.

现在,有什么方法可以获取有关发送数据可能使用的编码方式的其他提示?浏览器可能会看到该页面在ISO-8859-1中,因此也以该编码发送数据,并可能添加一些HTTP标头以指示格式.

获得字符集提示的典型来源是什么?

解决方法:

如果您不知道编码,那么您已经迷路了.您需要确保编码尽可能定义.如果数据来自表单,请使用accept-charset属性指定已定义的编码;最好是UTF-8:

<form accept-charset='utf-8'>

在您的服务器上,使用mb_check_encoding确认接收到的数据确实按照您的请求进行了UTF-8编码.如果不是,则取决于您要执行的操作.出于所有目的和目的,您手上都会有随机垃圾数据;是否可以以任何方式进行补救取决于您的情况以及您要对数据进行的处理.

FWIW,浏览器不发送任何指示符来说明它们发送给您的编码.某些浏览器(* cough *旧的IE * cough *)也不总是接受accept-charset属性,除非您强迫它对非ASCII字符进行编码.网站通常会在其中嵌入带有雪人字符☃或类似Unicode-y的隐藏输入.

此外,如果出于某种原因,浏览器没有以UTF-8编码内容,而是尝试发送非ASCII内容,则通常会发送HTML实体.您可以尝试检测到这一点.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...