HTML 表单 : issues combining charset with enctype in Firefox

标签 html firefox character-encoding enctype

我有一个带有留言板的网站。该板允许人们发布消息并包含附件。我遇到了一个问题,每当有人用非 Unicode 字符写一篇文章时,我的网站就会出现问题。为了解决这个问题,我更改了我的 HTML 表单代码

enctype="multipart/form-data"

(因为我正在接受文件上传)到:

enctype="multipart/form-data;charset=UTF-8"

这解决了字符问题。但它破坏了 Firefox 2 到 3.5 中的文件上传功能。 Firefox 接受用户提交的所有文本,但不接受文件数据。它的行为完全像它应该的那样,但就好像没有提交文件一样。在 Safari 中一切正常。

我也试过

enctype="multipart/form-data" accept-charset="UTF-8"

...但这对字符问题没有影响。

有什么办法解决这个问题吗?

最佳答案

charset不是 multipart/form-data 的注册参数媒体类型。它不应该做任何事情。

根据 RFC2388 ,提交字段的字符集实际上应该由浏览器在 Content-Type 中传递表单数据子部分的标题。实际上没有浏览器这样做。

accept-charset不能使用,因为它在 IE 中被破坏了:当字符不适合主字符集(它是当前页面)。这实际上会破坏您的字符串,因为您无法找出 IE 实际使用的字符集。

让浏览器以 UTF-8 格式提交表单的唯一有效方法是将包含表单的页面设置为 UTF-8,方法是设置 Content-Type: text/html;charset=utf-8 header ,包括 <meta> HTTP 等价物,或两者(如果用户将页面保存到光盘,丢失 header 信息,这可能是个好主意)。

关于HTML 表单 : issues combining charset with enctype in Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1522620/

相关文章:

css - 如何在一个 div 中使多个 span 宽度相等

css - Firefox、Windows DPI 缩放和 CSS 最大宽度媒体查询

javascript - Firefox 中的本地存储

c# - .NET 3.5 C# StreamReader 读取 ISO-8859-1 字符不正确

r - 阿拉伯文本CSV文件导入?

javascript - jQuery(form).serialize() 失败,返回 "URIError: malformed URI sequence"

javascript - 从 Amazon、eBay 等网站提取 .ico 图标

javascript - 大学学习JavaScript,这应该是一个基于框架的样式查看器

javascript - 即使在 Chrome 上没有移动鼠标,也会在滚动时触发 mousemove 事件

javascript - 在游戏应用中打开游戏