当前位置:  开发笔记 > 前端 > 正文

为Internet Explorer设置表单提交的字符编码

如何解决《为InternetExplorer设置表单提交的字符编码》经验,为你挑选了4个好方法。

我有一个包含表单的页面.此页面的内容类型为text/html; charset = utf-8.我需要使用ISO-8859-1字符编码将此表单提交给服务器.这可能是Internet Explorer吗?

将accept-charset属性设置为表单元素,就像这样,适用于Firefox,Opera等,但不适用于IE.

...

编辑:此表单由服务器A创建,并将提交给服务器B.我无法控制服务器B.

如果我将服务器A设置为使用charset ISO-8859-1提供内容,一切正常,但我正在寻找一种方法来使这项工作无需更改服务器A的编码.我有另一个关于在服务器A中设置编码的问题.



1> 小智..:

有一个简单的黑客:

在表单中插入一个隐藏的输入字段,该字段只有在您发布(或执行GET)服务器的字符集中才能接受.

示例:如果表单位于服务于ISO-8859-1的服务器上,并且表单将发布到服务器,期望UTF-8在表单中插入如下内容:


然后,IE将"检测"表单包含UTF-8字符,并在POST或GET时使用UTF-8.奇怪,但确实有效.


这似乎不适用于相反的情况.将一个停留在utf-8页面上的表单发布到另一台服务器上的iso-8859-1页面.

2> 小智..:

有不错的浏览器:

使用IE(任何):

document.charset = 'ISO-8859-1'; // do this before submitting your non-utf8 !


这似乎解决了IE问题(当在浏览器中启用JavaScript时),并且您可以通过在`form`标记中使用属性`onsubmit ="document.charset ='ISO-8859-1'"`来实现它.

3> Juha Syrjälä..:

似乎无法做到这一点,至少目前的IE版本(6和7).

IE支持表单属性accept-charset,但前提是它的值为'utf-8'.

解决方案是修改服务器A以为包含表单的页面生成编码"ISO-8859-1".


IE只能使用`accept-charset`作为'备份',因为它无法对页面自己的字符集中的字段进行编码.指定`accept-charset`,你将无法分辨使用了哪种编码.因此,它完全没用; 永远不应该使用它.确实,唯一的解决方案是更改包含表单的页面(或iframe)的字符集.

4> 小智..:

我在这里遇到了同样的问题.我有一个需要发布到ISO-8859-1服务器的UTF-8页面.

看起来IE无法处理ISO-8859-1.但是,它可以处理ISO-8859- 15.


  ...

所以这对我有用,因为ISO-8859-1和ISO-8859-15几乎相同.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有