很多牌谱在非IE浏览器下显示乱码这个问题已经困扰了我很久,最近终于解决了。下面简单说一下问题产生的原因和解决办法。
我的网站采用IFRAME加载handviewer,它的src设置为
handviewer.html?lin=牌局内容(很长一串字符),如果这个牌局内容里面包括有中文字符,当网页在非IE浏览器下加载时,如果不做任何处理的话,会产生乱码。解决的方案是对牌局内容先进行编码然后再加载,我使用的是Javascript,代码如下:
style="text-align:center">
var EncodedStr = escape(牌局内容--包含中文的字符串)
var ifr = document_createElement_x_x("IFRAME");
ifr.scrolling = "no";
ifr.src = "../../HandEditor/handviewer.html?lin=" + EncodedStr;
//这是我网站上的handviewer所在路径
ifr.width = 600;
ifr.height = 600;
document.getElementByIdx_x_x("id1").a(ifr);
这个解决方案的核心是使用javascript里的escape函数先对中文字符串编码成UTF-8,然后再赋給IFRAME的src,就不会有问题了。