前端向数据库get数据出现的中文乱码问题

时间:2021-12-23 06:39:51
在JS 中用ajax方式向数据库get数据,同时用console语句打印出来,结果数据中的中文都乱码了,获取数据程序如下:
 function ReadTable() {
        $.ajax({
            url:server+"/getAllMajorLocation" ,
            async:false,
            dataType:"jsonp",
            jsonp:"jsonCallBack",
            success:function (data) {
                console.log(data[0].data.chargeUnit);     //将数据打印出来
                if(data.length == 0){
                    layer.alert('没有数据!',{
                        closeBtn: 0
                    });
                }else{
                    var monitorDataShow = [];
                    for(var i in data){
                        var obj = {
                            id: data[i].data.id,
                            type:data[i].data.type,
                            unitImportmentName: data[i].data.unitImportmentName,
                            chargeUnit:data[i].data.chargeUnit,
                            dutyPeople:data[i].data.dutyPeople,
                            belongSchool:data[i].data.belongSchool==1?"校区1":data[i].data.publicStatus==2?"校区2":"错误",
                            location:data[i].data.location,
                            detail:data[i].data.detail,
                            defensePoint:data[i].data.defensePoint,
                        };
                        monitorDataShow.push(obj);
                    }
                    monitorTable.rows.add(monitorDataShow).draw();
                }
            }
        });
    }


这是网页上console打印出来的内容(部分): 
 Object 
belongSchool: 1
chargeUnit: "???"
defensePoint: "??"
detail: "????"
dutyPeople: "??"
id: 3location: "??????"
type: "??"
unitImportmentName: "???????????"


但是~我用Postman插件向数据库获取数据的话返回都是正常的,获取到的数据如下:
null([{"data":{"belongSchool":1,"chargeUnit":"保卫处","defensePoint":"防火","detail":"防止火灾","dutyPeople":"校长","id":3,"location":"浙江省杭州市","type":"高校","unitImportmentName":"某某大学"}}])


另外还有一个就是基本类似的一个界面获取到的数据是正常的,获取的方式是一模一样的,找了好久的原因了,求各位大神有空指点一下呀,在线等

8 个解决方案

#1


1.首先检查你的页面文件编码 是不是utf8的  
2.然后检查你的页面编码  就是有没有指定
<meta charset=utf-8/>

3.检查你后端脚本文件的编码
4.检查数据库编码  以上任何一个错误 都可能导致乱码

#2


引用 1 楼 zhangsheng_1992 的回复:
1.首先检查你的页面文件编码 是不是utf8的  
2.然后检查你的页面编码  就是有没有指定
<meta charset=utf-8/>

3.检查你后端脚本文件的编码
4.检查数据库编码  以上任何一个错误 都可能导致乱码
前端几个地方都已经设为UTF8的格式了,后端也是,而且用postman插件获取到的数据是正常的,这样是不是表示后端和数据库是没问题的?

#3


contentType:"application/x-www-form-urlencoded; charset=utf-8", 

#4


jsonp是用script标签加载的js代码,自己检查服务器响应的charset是什么,如果和当前页面不一样会乱码,增加ajax配置scriptCharset 指定为url加载的页面的编码

#5


引用 3 楼 DeneImp 的回复:
contentType:"application/x-www-form-urlencoded; charset=utf-8", 
我的
contentType设为jsonp是为了解决和后太的跨域问题,本身charset就是utf-8了

#6


引用 4 楼 showbo 的回复:
jsonp是用script标签加载的js代码,自己检查服务器响应的charset是什么,如果和当前页面不一样会乱码,增加ajax配置scriptCharset 指定为url加载的页面的编码
加了scriptCharset还是乱码 前端向数据库get数据出现的中文乱码问题

#7


后台和数据库应该是没问题的,因为你用插件可以获得中文内容~觉得还是页面编码问题

#8


引用 7 楼 Dream_On_324 的回复:
后台和数据库应该是没问题的,因为你用插件可以获得中文内容~觉得还是页面编码问题
我也这么想的。。就是找不来 前端向数据库get数据出现的中文乱码问题

#1


1.首先检查你的页面文件编码 是不是utf8的  
2.然后检查你的页面编码  就是有没有指定
<meta charset=utf-8/>

3.检查你后端脚本文件的编码
4.检查数据库编码  以上任何一个错误 都可能导致乱码

#2


引用 1 楼 zhangsheng_1992 的回复:
1.首先检查你的页面文件编码 是不是utf8的  
2.然后检查你的页面编码  就是有没有指定
<meta charset=utf-8/>

3.检查你后端脚本文件的编码
4.检查数据库编码  以上任何一个错误 都可能导致乱码
前端几个地方都已经设为UTF8的格式了,后端也是,而且用postman插件获取到的数据是正常的,这样是不是表示后端和数据库是没问题的?

#3


contentType:"application/x-www-form-urlencoded; charset=utf-8", 

#4


jsonp是用script标签加载的js代码,自己检查服务器响应的charset是什么,如果和当前页面不一样会乱码,增加ajax配置scriptCharset 指定为url加载的页面的编码

#5


引用 3 楼 DeneImp 的回复:
contentType:"application/x-www-form-urlencoded; charset=utf-8", 
我的
contentType设为jsonp是为了解决和后太的跨域问题,本身charset就是utf-8了

#6


引用 4 楼 showbo 的回复:
jsonp是用script标签加载的js代码,自己检查服务器响应的charset是什么,如果和当前页面不一样会乱码,增加ajax配置scriptCharset 指定为url加载的页面的编码
加了scriptCharset还是乱码 前端向数据库get数据出现的中文乱码问题

#7


后台和数据库应该是没问题的,因为你用插件可以获得中文内容~觉得还是页面编码问题

#8


引用 7 楼 Dream_On_324 的回复:
后台和数据库应该是没问题的,因为你用插件可以获得中文内容~觉得还是页面编码问题
我也这么想的。。就是找不来 前端向数据库get数据出现的中文乱码问题