问题:
A应用GBK编码,这里的代码可以改动。
B应用UTF-8编码,这部分代码没法改动。A应用某个页面里有一个表单,需要向B应用里提交数据,如何解决编码不同的问题。
尽量不改变A,B各自的整体编码。
方案:
在form里有一个不太常见的属性:accept-charset,用它可以完成我们的需求。
在GBK编码的页面里编写如下代码:
<form method="post" action="..." accept-charset="utf-8"> ... </form>
如此的代码在Firefox等正常的浏览器下没有任何问题,但是遇到IE这个变态浏览器就不灵光了,可以使用js来Hack一下:
<form method="post" action="..." accept-charset="utf-8" οnsubmit="document.charset='utf-8';"> ... </form>
剩下的工作浏览器会搞定。