上报页面title有乱码?

问题描述

我们上报页面title 偶尔有这样的乱码
类似这样(这是四条乱码):
2019年辽宁省职业æ,
"不同名称的阳台有什么区别,
2019年辽宁省职业教育对口升学招生考试报名条件-高职单招网

, 百诺微距云台,MP80【多少钱 规格参数 图片 采购】-西域

clipboard.png

问题出现的环境背景及自己尝试过哪些方法

发现有的是ua是百度爬虫造成 所以我们过滤掉了ua带spider字符串的情况,但是还是发现有这样的问题

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

title: encodeURIComponent(document.title)
阅读 17.4k
2 个回答

问题解决了,看的这个博客

var semersList = [
                "不同名称的阳台有什么区别",
                "asdsad不同名称的阳台有什么区别",
                "2019年辽宁省职业教育对口升学招生考试报名条件-高职单招网",
                "aksdklh~*(^&*^@%#@)",
                "2019大撒asdsa旦阿斯asd",
                "尚好佳译翻译服务有限公司"
            ]
            mapObjArray = []
            semersList.forEach(function(elem) {
                console.log('-----')
                console.log(elem)
                console.log(EncodeUtf8(elem))
                console.log(decodeURIComponent(EncodeUtf8(elem)))
                console.log(decodeUtf8_in_Url(elem));
            });

            function EncodeUtf8(s1) {
                var s = escape(s1);
                var sa = s.split("%");
                var retV = "";
                if (sa[0] != "") {
                    retV = sa[0];
                }
                for (var i = 1; i < sa.length; i++) {
                    if (sa[i].substring(0, 1) == "u") {
                        retV += Hex2Utf8(Str2Hex(sa[i].substring(1, 5)));
                    } else retV += "%" + sa[i];
                }
                return retV;
            }

            

            function decodeUtf8_in_Url(s1) {
                // escape函数用于对除英文字母外的字符进行编码。如“Visit W3School!”->"Visit%20W3School%21"
                var s = escape(s1);
                var sa = s.split("%"); //sa[1]=u6211
                var retV = "";
                if (sa[0] != "") {
                    retV = sa[0];
                }
                for (var i = 1; i < sa.length; i++) {
                    if (sa[i].substring(0, 1) == "u") {
                        retV += Hex2Utf8(Str2Hex(sa[i].substring(1, 5)));
                        if (sa[i].length >= 6) {
                            retV += sa[i].substring(5);
                        }
                    } else retV += "%" + sa[i];
                }
                return decodeURI(retV);   // 强制告诉从URL中拿到的中文是utf-8编码,转码成URI后在解码URI,成为中文进行网络传输
            }
            
            function Hex2Utf8(s) {
                var retS = "";
                var tempS = "";
                var ss = "";
                if (s.length == 16) {
                    tempS = "1110" + s.substring(0, 4);
                    tempS += "10" + s.substring(4, 10);
                    tempS += "10" + s.substring(10, 16);
                    var sss = "0123456789ABCDEF";
                    for (var i = 0; i < 3; i++) {
                        retS += "%";
                        ss = tempS.substring(i * 8, (eval(i) + 1) * 8);
                        retS += sss.charAt(Dig2Dec(ss.substring(0, 4)));
                        retS += sss.charAt(Dig2Dec(ss.substring(4, 8)));
                    }
                    return retS;
                }
                return "";
            }
        
            
            function Str2Hex(s) {
                var c = "";
                var n;
                var ss = "0123456789ABCDEF";
                var digS = "";
                for (var i = 0; i < s.length; i++) {
                    c = s.charAt(i);
                    n = ss.indexOf(c);
                    digS += Dec2Dig(eval(n));
                }
                
                return digS;
            }
            
            function Dec2Dig(n1) {
                var s = "";
                var n2 = 0;
                for (var i = 0; i < 4; i++) {
                    n2 = Math.pow(2, 3 - i);
                    if (n1 >= n2) {
                        s += '1';
                        n1 = n1 - n2;
                    } else
                        s += '0';
                }
                return s;
            }
            
            function Dig2Dec(s) {
                var retV = 0;
                if (s.length == 4) {
                    for (var i = 0; i < 4; i++) {
                        retV += eval(s.charAt(i)) * Math.pow(2, 3 - i);
                    }
                    return retV;
                }
                return -1;
            }
            

没有源代码,没有抓取方式,没有样例,别人怎么给你调试,全靠猜?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题