繁体   English   中英

POST数据将始终使用UTF-8字符集传输到服务器

[英]POST data will always be transmitted to the server using UTF-8 charset

POST数据将始终使用UTF-8字符集传输到服务器。 -jQuery.ajax文档

仅当您将POST与jQuery(jQuery.post)一起使用或使用<form method=post>时,才会发生这种情况吗?

表单发布的内容编码与声明的文档编码一致。 例如:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

提交表单后,默认编码为form-url-encoded。

XHR请求可以覆盖设置:

xhr.setRequestHeader('Content-Type','text/xml; charset=utf-8;');

因此,要回答您的问题,可以在iso-8859-1中提交表单,但是Ajax调用使用utf-8。 请避免这种情况,否则您的服务器端代码会变得混乱。

简短答案

在HTML中,可以通过在表单上设置accept-charset属性来设置accept-charset 如果未设置或给定的值无效,则用户代理默认为文档的字符集,然后为UTF-8。 jQuery通过在请求上设置Content-Type标头来实现。

有资料的答案更长

所有HTML表单都可以具有属性accept-charset ,正如HTML规范所述:

accept-charset属性提供了用于提交的字符编码。 如果指定,则该值必须是一组有序的,唯一的,以空格分隔的,不区分大小写的Token,并且每个令牌都必须是ASCII兼容字符编码的标签之一的ASCII不区分大小写的匹配项。

资料来源 ,蓝色大东西下面两段。

您可能还对§4.10.22.5 选择表单提交编码感兴趣,请强调:

如果用户代理要为表单选择编码,可以选择设置允许非ASCII兼容的编码标志,则它必须运行以下子步骤:

  1. 令input为表单元素的accept-charset属性的值。

  2. 让候选编码标签成为在空格上分割输入的结果。

  3. 令候选编码为字符编码的空列表。

  4. 对于候选编码标签中的每个令牌,依次(按照在输入中找到它们的顺序),获得令牌的编码,如果这不会导致失败,则将编码附加到候选编码中。

  5. 如果未设置“允许非ASCII兼容编码”标志,请从候选编码中删除所有非ASCII兼容字符编码的编码。

  6. 如果候选编码为空,则返回UTF-8并中止这些步骤。

  7. 候选编码中的每个字符编码都可以表示有限数量的字符。 (例如,UTF-8可以表示所有110万个左右的Unicode代码点,而Windows-1252只能表示256个。)

    对于候选编码中的每种编码,请确定该编码可以表示的表单数据集中的名称和条目的值中的多少个字符(不忽略重复项)。 令max为最高计数。 (对于UTF-8,max等于表单数据集中条目的名称和值中的字符数。)

    以候选编码返回第一个编码,该候选编码可以对表单数据集中条目的名称和值中的最大字符进行编码。

资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM