HTML 5使用RFC 2388(RFC 7578废弃),但HTML 5显式从非文件字段中删除Content-Type标头,而RFC不:
The parts of the generated multipart/form-data resource that correspond to non-file fields must not have a Content-Type header specified. Their names and values must be encoded using the character encoding selected above (field names in particular do not get converted to a 7-bit safe encoding as suggested in RFC 2388).
RFC旨在允许多部分/表单数据在除HTML之外的其他环境中可用(尽管这是最常见的用途).在其他上下文中,允许使用Content-Type.只是不在HTML 5中(但在HTML 4中允许).
如果没有Content-Type标头,隐藏的_charset_表单字段(如果存在)是HTML 5< form>的唯一方式. submitter可以明确说明使用哪个charset.
根据您链接到的HTML 5算法规范,必须从< form>中选择所选的字符集. element的accept-charset属性(如果存在),否则是HTML本身使用的字符集(如果它与ASCII兼容),否则为UTF-8.这在算法规范中以及在引用HTML 5时在RFC 7578第5.1.2节中明确说明.
因此,实际上不需要由网络浏览器明确说明字符集,因为表单提交的接收者应该知道通过< form>如何预期哪些字符集.已创建,因此可以在解析提交时检查这些字符集.如果接收者想要知道所使用的特定字符集,则需要在< form>中包含隐藏的_charset_字段.