ISO-8859-1中UTF8页的带有MSIE的张贴表格


Posting Form from UTF8 Page in ISO-8859-1 with MSIE

我正在进行的一个项目要求我将UTF-8编码页面上的HTML表单发布到只接受ISO-8859-1编码的服务器,然后在iFrame中显示结果。这在FF、Chrome、Safari、。。。但在MSIE中不起作用(甚至不是9)。IE坚持以UTF-8发布表单。我无法访问我发布的服务器,也无法更改我发布的页面的字符集。

Form包含2个具有常数值的元素,但其中一些值包含德语元音变音符(É、Ö和Ü)。

因此,我想出的解决方案是将表单发布到"代理脚本"中,该脚本对请求值进行解码,通过cURL发布所有内容并返回结果。但是这个网站托管的服务器当然不支持cURL。

那么,有人知道如何解决这个问题吗?我现在会使用任何简单可行的解决方案(甚至是一些非常奇怪的Javascript解决方案)。

问候,Jake

这里有一个简单的破解方法:

在表单中插入一个隐藏的输入字段,其中包含一个仅出现在您发布(或执行GET)要接受的服务器字符集中的实体。

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

<input name="iehack" type="hidden" value="&#9760;" />

IE会"检测"到表单包含UTF-8字符,并在POST或GET时使用UFT-8。奇怪,但它确实有效。