我有一个html表单可以做各种奇怪的后端事情。这在firefox中运行良好。在大多数情况下,它在IE中运行良好
然而,(英镑)英镑符号会引起问题,并且似乎在提交中被提及。
表格是这样的
<form action="*MyFormAction*" accept-charset="UTF-8" method="post">
我想我以前见过这个问题但是不记得解决方案了。
编辑,欧元符号€工作正常
编辑2, 事实上,如果我将€符号与£符号放在一起,它也可以正常工作。如果我使用不在iso8859-1的扩展部分中的字符来查看问题,它可以正常工作。如果我使用iso8859-1的扩展机箱,他们就会受到攻击。那么如何让IE使用accept-charset所说的字符集呢?
答案 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="€" />
修复了编码(实体是欧元符号)。
答案 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
希望它有所帮助。