解决JS动态输出列表导致的浏览器乱码问题

作者:像素猫

时间:2026-10-25

浏览:260

本文针对数据库与系统编码不一致导致的JS动态输出列表乱码问题,分析了原有通过navigator.userAgent判断浏览器类型并拼接URL参数的复杂方案。该方案因逻辑繁琐且在多浏览器下仍出现乱码而失效。最终推荐在script标签中直接设置charset="utf-8"属性的简洁方法,有效解决了跨浏览器编码显示异常的问题。

文章目录

背景与问题描述

当数据库采用UTF-8编码,而现有系统使用gb2312编码时,常会遇到编码不一致的问题。



一种常见的处理方式是使用<script>echo_script(url);</script>来动态加载脚本。


原有复杂实现方案

具体实现代码如下:

 
<script>
function echo_script(url){
var USERAGENT = navigator.userAgent.toLowerCase();
var bname = '';
var b = ['ie','msie','firefox','chrome','opera','safari','maxthon','mozilla','webkit'];
for(i in b){
if(USERAGENT.indexOf(b[i]) > -1){
bname = b[i];
break;
} 
} 
if(!bname)bname='other';
var ie8 = USERAGENT.indexOf('msie 8') > -1 ? 'ie8' : false;
var ie7 = USERAGENT.indexOf('msie 7') > -1 ? 'ie7' : false;
if(bname == 'firefox' || ie8 )
{ 
var enc = "no";
} 
if(ie8){
bname = 'ie8';
}else if(ie7){
bname = 'ie7';
} 
var tmp_ie8 = ie8 ? 'ie8' : 'no_ie8';
document.write("<script src='"+url+"&encode="+enc+"&browser="+tmp_ie8+"&browserv="+bname+"'><\/script>");
} 
</script>

然而,这种方法导致在不同浏览器下依然出现乱码,带来了很大的困扰。


简化解决方案

其实有更简单的解决办法。



<script type="text/javascript" charset="utf-8" src="xx.com/xx.php"></script>


通过这种方式,乱码问题便不再出现。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章