近日在升级KISSY的过程中,在IE6下遇到一个很奇怪的问题:
页面编码是gbk,ji和css文件是utf-8的,当用户要使用某些功能时页面会弹出迷你登录框提示用户登录,会发送异步请求,获得登录框的模板,编码是和js一致的(utf-8),第一次是ok的,但当刷新页面第二次弹出登录框时,问题来了,从接口返回的中文乱码了。用fiddler查看,发现第二次,IE6没有发异步请求获得数据,而是从缓存中得到的。
解决方案有两种:
1. 给异步请求加上时间戳,确保每次发出请求,从服务器获得新数据。这种方法比较容易实施,也不会影响功能,但因为不缓存请求,为服务器增加了不必要的压力,降低了性能,需要结合应用场景选择。
2. 把异步请求的接口返回的数据的中文用unicode处理,是比较安全实用的方法,无论将来怎么变化,都不会产生编码问题。
页面编码是gbk,ji和css文件是utf-8的,当用户要使用某些功能时页面会弹出迷你登录框提示用户登录,会发送异步请求,获得登录框的模板,编码是和js一致的(utf-8),第一次是ok的,但当刷新页面第二次弹出登录框时,问题来了,从接口返回的中文乱码了。用fiddler查看,发现第二次,IE6没有发异步请求获得数据,而是从缓存中得到的。
解决方案有两种:
1. 给异步请求加上时间戳,确保每次发出请求,从服务器获得新数据。这种方法比较容易实施,也不会影响功能,但因为不缓存请求,为服务器增加了不必要的压力,降低了性能,需要结合应用场景选择。
2. 把异步请求的接口返回的数据的中文用unicode处理,是比较安全实用的方法,无论将来怎么变化,都不会产生编码问题。
本文描述了在IE6浏览器中遇到的一个特殊问题:登录框在第二次弹出时出现中文乱码的情况。问题原因是IE6未重新发送异步请求而直接使用了缓存数据。文中提供了两种解决方案:一是通过添加时间戳强制获取新数据;二是采用Unicode编码处理接口返回的中文内容。

800

被折叠的 条评论
为什么被折叠?



