IE munging pound(£)符号

时间:2009-02-24 11:51:32

标签: html internet-explorer character-encoding

我有一个html表单可以做各种奇怪的后端事情。这在firefox中运行良好。在大多数情况下,它在IE中运行良好

然而,(英镑)英镑符号会引起问题,并且似乎在提交中被提及。

表格是这样的

 <form action="*MyFormAction*"  accept-charset="UTF-8" method="post">

我想我以前见过这个问题但是不记得解决方案了。

编辑,欧元符号€工作正常

编辑2, 事实上,如果我将€符号与£符号放在一起,它也可以正常工作。如果我使用不在iso8859-1的扩展部分中的字符来查看问题,它可以正常工作。如果我使用iso8859-1的扩展机箱,他们就会受到攻击。那么如何让IE使用accept-charset所说的字符集呢?

4 个答案:

答案 0 :(得分:6)

  

接收字符集= “UTF-8”

在IE中没有做你认为它做的事情(或标准说它做了)。相反,IE使用值('UTF-8')作为替代的编码列表,如果无法使用通常的默认编码(与页面自己的编码相同)对字段进行编码。

因此,如果您添加此属性并且您的页面尚未包含在UTF-8中,则可以将字符提交为页面编码 UTF-8,并且无法使用你的表格提交阅读脚本要知道!

因此你不应该使用accept-charset;相反,您应该始终确保包含表单的页面正确地提供为“Content-Type:text / html; charset = utf-8”(通过HTTP标头和/或&lt; meta&gt;)。

  

事实上,如果我将€符号加上£符号,它也可以正常工作。

是的,那是因为'€'无法在页面的默认编码中编码(可能是ISO-8859-1)。所以IE用来发送编码为UTF-8的字段,这是你一直想要的。

答案 1 :(得分:1)

我认为bobince有一个理想的答案,就是“以UTF-8服务页面”,但是由于我不能这样做,所以我发布了我的工作以求繁荣。

使用非ISO-8859-1(我们的页面所服务的内容)添加隐藏字段unmunge扩展字符强制提交为UTF8

所以

<input type="hidden" name="unmunge" value="&#x20ac;"  />

修复了编码(实体是欧元符号)。

答案 2 :(得分:0)

£如何提交?如果它在价格的输入框中不提交,只允许提交数字并在再次显示价格时添加£。或者在后端脚本中添加货币符号。

答案 3 :(得分:0)

我不确定这是否有帮助(请阅读http://fyneworks.blogspot.com/2008/06/british-pound-sign-encoding-revisited.html上的整篇文章)

摘录:

  

问题如果你看看   UTF-8 / Latin-1(AKA ISO-8859-1)   字符表你会发现   英镑的十进制代码   英镑符号是163 - 和   十六进制代码是A3。

     

£=%A3

     

然而,(全部)并非如此   编码/解码功能   的Javascript ...

encodeURI/encodeURIComponent
Encodes a Uniform Resource Identifier (URI) component by
     

替换某些特定的实例   字符由一个,两个或三个   转义序列代表   字符的UTF-8编码

     

这意味着,为了编码我们的   心爱的英镑符号,Javascript使用2   字符。这是令人讨厌的地方   “”进来......

     

£=%C2%A3

希望它有所帮助。