PageSourceSearch

https://www.radio.cn/pc-portal/js/register.js?0732

js radio.cn collected 2026-09-24 17:20:03 UTC 25,737 bytes, 744 lines download raw bytes

1var s;
2var timer;
3var ss=true;
4var true_answer=0;
5var userId=$.cookie("nickname");
6var uid=$.cookie('uid');
7var mm=false;
8var u_yzm;
9var newIp="https://ytapi.radio.cn/ytsrv/srv";//登录、注册、找回密码、第三方登录等接口ip,2020-03月修改
10$("input.carId").parent().remove();
11/*$.cookie("logName",null);
12$.cookie("uid",null);
13$.cookie("logPass",null);
14$.cookie("nickname",null);*/
15
16if($.cookie("nickname")!="null"&&$.cookie("nickname")!=null){
17    $(".login").html($.cookie("nickname")+"<a href='javascript:;' class='bye'>退出</a>");
18}else{
19    //console.log(userId+":"+uid);
20}
21$(".login").on("click",".bye",function(){
22    if(confirm("您确定要退出吗?")){
23        // $(".login").html('<a href="javascript:;" class="register_btn">注册</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="javascript:;" class="login_btn">登录</a>');
24        $(".login").html('<a href="javascript:;" class="login_btn">登录</a>');
25        $.cookie("logName",null, {path: '/'});
26        $.cookie("uid",null, {path: '/'});
27        //$.cookie("logPass",null, {path: '/'});
28        $.cookie("nickname",null, {path: '/'});  
29    }
30})
31$(".user_box .message").eq(0).show();
32$(".user_box3 .message").eq(0).show();
33$(".user_box h2 a").click(function(){
34	var n=$(this).index();
35	$(this).addClass("check").siblings().removeClass("check");
36	$(".user_box .message").hide();
37	$(".user_box .message").eq(n).show();
38})
39$(".user_box3 h2 a").click(function(){
40	var n=$(this).index();
41	$(this).addClass("check").siblings().removeClass("check");
42	$(".user_box3 .message").hide();
43	$(".user_box3 .message").eq(n).show();
44})
45$(".email").blur(function(){
46    var email=$(this).val();
47    var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;  
48    if(reg.test(email)){
49    	$(this).next("span").hide();
50    }else{
51    	$(this).next("span").show();
52    }
53})
54$(".username").blur(function(){
55    var username=$(this).val();
56	var reg=/^[\u0391-\uFFE5A-Za-z0-9]{4,20}$/;
57	if(reg.test(username)){
58    	$(this).next("span").hide();
59    }else{
60    	$(this).next("span").show();
61    }
62})
63$(".log_name").blur(function(){
64    var username=$(this).val();
65    var reg1 = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;  
66    var reg2 = /^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1})|(19[0-9]{1}))+\d{8})$/; 
67    if(reg1.test(username)||reg2.test(username)){
68        $(this).next("span").hide();
69        //console.log("用户名正确");
70    }else{
71        $(this).next("span").show();
72        //console.log("用户名错误");
73    }
74})
75$(".pwd").blur(function(){
76    var pwd=$(this).val();
77    //var reg=/^[A-Za-z0-9]{6,20}$/;
78    if(pwd.length>=6&&pwd.length<=20){
79        $(this).next("span").hide();
80    }else{
81        $(this).next("span").show();
82    }
83})
84$(".a_pwd").blur(function(){
85	var a_pwd=$(this).val();
86	var pwd=$(this).parent().prev("div").find(".pwd").val();
87	if(a_pwd==pwd){
88		$(this).next("span").hide();
89	}else{
90		$(this).next("span").show();
91	}
92})
93$(".carId").blur(function(){
94    // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
95    var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
96    var card=$(this).val();
97    if(reg.test(card) === false)
98    {
99        $(this).next("span").show();
100    }else {
101        $(this).next("span").hide();
102    }
103});
104$(".send").click(function(){     
105        var phone=$(this).prev(".phoneNum").val();
106        var phone_reg = /^((1)+\d{10})$/; 
107        // var phone_reg = /^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1})|(19[0-9]{1}))+\d{8})$/; 
108        if(phone_reg.test(phone)){
109            if(ss){
110                s=60;
111                ss=false;
112                clearInterval(timer); 
113                countDown();     
114                timer=setInterval(countDown,1000);
115            }else{
116                return false;
117            }
118            $.ajax({
119                url:newIp+"/pcUserOperation/sendVerificationCode",
120                type: 'post',    
121                data:{
122                    "plantName":"CCYT",
123                    "mobilNumber":phone,
124                    "businessType":1014
125                    }, 
126                headers:{
127                    "Content-Type":"application/x-www-form-urlencoded",
128                    "providerCode":"25010",
129                    "version":"4.0.0",
130                    "equipmentSource":"WEB"
131                },      
132                success: function(data){
133                    console.log("手机号码发送成功");
134                    if(data.rt=="1"){
135                        //console.log("手机号码发送成功");
136                    }
137                    
138                },
139                error:function(){
140                    //console.log("发送失败");
141                }
142            }) 
143        }else{
144            alert("请输入有效的手机号码");
145        }
146
147
148})
149function countDown(){
150    s--;
151    if(s<=0){
152   	    clearInterval(timer);
153   	    $(".send").html("发送验证码");
154   	    ss=true;
155    }else{
156   	    $(".send").disabled = true;
157   	    $(".send").html(s+"秒后重试");
158    }
159  
160
161}
162//验证码失去焦点验证
163/*$(".yzm").blur(function(){
164    var phone=$(this).parents("form").find(".phoneNum").val();
165    var yzm=$(this).parents("form").find(".yzm").val();
166    var that=$(this).next();
167    console.log(that);
168    $.ajax({
169        url:"http://tacc.radio.cn/user/checkyanzm",
170        type: 'GET',  
171        dataType : "jsonp",//数据类型为jsonp  
172        jsonp: "callback",   
173        async:false,
174        data:{
175            "phone":phone,
176            "token":"123456",
177            "yzm":yzm
178            },  
179        success: function(data){
180            console.log(data);
181            if(data.message=="验证码通过"){
182                console.log("验证码正确");
183                that.hide();
184            }else if(data.message=="param fail"){
185                that.show().text("验证码有误");
186                mm=false;
187                console.log("验证码有误");
188            }else{
189                that.show().text(data.message);
190                mm=false;
191                console.log(data.message);
192            }
193        }
194    })
195})*/
196$(".next").click(function(){
197    var phone=$(this).parents("form").find(".phoneNum").val();
198    var yzm=$(this).parents("form").find(".yzm").val();
199    u_yzm=yzm;
200    var that=$(this).parent().prev().find("span");
201    if(phone&&yzm){
202        that.hide();
203        mm=true;
204        that.parents("form").hide().next(".find2").show();
205    }else{
206        var n=$(this).parents("form").find("span:visible").length;
207            //判断输入框是否全部填写
208            for(var i=0;i<$(this).parents("form").find("input:text").length;i++){
209                if($(this).parents("form").find("input:text").eq(i).val()==""){
210                    alert("请补全信息");
211                    return false;
212                }
213            }
214            //判断是否有不规范的输入
215            if(n!=0){
216               alert("请按要求填写");
217               return false;
218            }else{
219                //console.log("全部符合要求");
220            }
221    }
222    //console.log(phone+yzm);
223    /*$.ajax({
224        url:"http://tacc.radio.cn/user/checkyanzm",
225        type: 'GET',  
226        dataType : "jsonp",//数据类型为jsonp  
227        jsonp: "callback",   
228        async:false,
229        data:{
230            "phone":phone,
231            "token":"123456",
232            "yzm":yzm
233            },  
234        success: function(data){
235            console.log(data);
236            if(data.message=="验证码通过"){
237                //console.log("验证码正确");
238                that.hide();
239                mm=true;
240            }else if(data.message=="param fail"){
241                that.show().text("验证码有误");
242                //console.log("验证码有误");
243                mm=false;
244            }else{
245                that.show().text(data.message);
246                //console.log(data.message);
247                mm=false;
248            }
249            if(!mm){alert("请按照要求填写"); return false;}
250            var n=$(this).parents("form").find("span:visible").length;
251            //判断输入框是否全部填写
252            for(var i=0;i<$(this).parents("form").find("input:text").length;i++){
253                if($(this).parents("form").find("input:text").eq(i).val()==""){
254                    alert("请补全信息");
255                    return false;
256                }
257            }
258            //判断是否有不规范的输入
259            if(n!=0){
260               alert("请按要求填写");
261               return false;
262            }else{
263                //console.log("全部符合要求");
264            }
265            that.parents("form").hide().next(".find2").show();
266            //console.log($(this).parents("form").hide().next(".find2"));
267        }
268    })*/
269})
270$(".sbm").click(function(){
271	//判断输入框是否全部填写
272	for(var i=0;i<$(this).parents("form").find("input:text").length;i++){
273		if($(this).parents("form").find("input:text").eq(i).val()==""){
274            alert("请补全信息");
275			return false;
276		}
277	}
278    var sbm=$(this);
279    var phone=$(this).parents("form").find(".phoneNum").val();
280    var yzm=$(this).parents("form").find(".yzm").val();
281    var that=$(".yzm").next();
282    var username=$(this).parents("form").find(".phoneNum").val();
283    var nickname=$(this).parents("form").find(".username").val();
284    var userpass=$(this).parents("form").find(".pwd").val();
285    var idcard=$(this).parents("form").find(".carId").val();
286    //判断是否有不规范的输入
287    var n=that.parents("form").find("span:visible").length;
288    //console.log(n);
289    var m=that.parents("form").find("span:hidden").length;
290    //console.log(m);
291    if(n!=1){
292       //console.log("请按要求填写"+n);
293       //$(this).parents("form").find("input").val("");
294       return false;
295    }
296    if($(this).text()=="提交注册"){
297        $(this).text("注册中...");
298    }else{
299        return false;
300    }
301    $.ajax({
302        url:newIp+"/pcUserOperation/register",
303        type: "POST",    
304        async:false, 
305        data:{
306            "phone":parseData.enc(username),
307            //"userIcon":"",
308            //"sysCode":"",
309            "verificationCode":parseData.enc(yzm),
310            "userSex":parseData.enc('-1'),
311            //"contactInfo":"",
312            //"userAddress":"",
313            //"userBirthday":"",
314            "password":parseData.enc(userpass),
315            "nickName":parseData.enc(nickname),
316            //"userName":"",
317            "sysCode":parseData.enc("CCYT"),
318            //"equipment":"",
319            //"invitationCode":""
320            },  
321        headers:{
322            "Content-Type":"application/x-www-form-urlencoded",
323            "providerCode":"25010",
324            "version":"4.0.0",
325            "equipmentSource":"WEB"
326        },     
327        success: function(data){
328            console.log(parseData.dec(data.replace(/\n/g,'')));
329            data=parseData.dec(data.replace(/\n/g,''));
330            if(data.rt==1){
331                alert("注册成功");
332                closeAll();
333            }else if(data.message=="手机号存在,如忘记密码可以短信找回"){
334                alert("手机号存在,如忘记密码可以短信找回");
335            }
336            else{
337                alert(data.des);
338            }
339            sbm.text("提交注册");
340        },
341        error:function(){
342            //console.log("发送失败");
343            sbm.text("提交注册");
344        }
345    })
346/*    $.ajax({
347        url:"http://tacc.radio.cn/user/checkyanzm",
348        type: 'GET',  
349        dataType : "jsonp",//数据类型为jsonp  
350        jsonp: "callback",   
351        async:false,
352        data:{
353            "phone":phone,
354            "token":"123456",
355            "yzm":yzm
356            },  
357        success: function(data){
358            console.log(data);
359            if(data.message=="验证码通过"){
360                console.log("验证码正确");
361                that.hide();
362                //判断是否有不规范的输入
363                var n=that.parents("form").find("span:visible").length;
364                console.log(n);
365                var m=that.parents("form").find("span:hidden").length;
366                console.log(m);
367                if(n!=1){
368                   console.log("请按要求填写"+n);
369                   //$(this).parents("form").find("input").val("");
370                   return false;
371                }
372                var username=$(this).parents("form").find(".phoneNum").val();
373                var nickname=$(this).parents("form").find(".username").val();
374                var userpass=$(this).parents("form").find(".pwd").val();
375                $.ajax({
376                    url:"http://tacc.radio.cn/user/register",
377                    type: 'GET',  
378                    dataType : "jsonp",//数据类型为jsonp  
379                    jsonp: "callback",   
380                    async:false,
381                    data:{
382                        "nickname":nickname,
383                        "uimg":"",
384                        "username":username,
385                        "userpass":userpass,
386                        "source":1,
387                        "token":"123456"
388                        },  
389                    success: function(data){
390                        console.log(data);
391                        if(data.message=="注册成功"){
392                            alert("注册成功");
393                            closeAll();
394                        }else if(data.message=="手机号存在,如忘记密码可以短信找回"){
395                            alert("手机号存在,如忘记密码可以短信找回");
396                        }
397                        else{
398                            alert("注册失败,请重试");
399                        }
400                    },
401                    error:function(){
402                        console.log("发送失败");
403                    }
404                })
405            }else if(data.message=="param fail"){
406                that.show().text("验证码有误");
407                mm=false;
408                alert("验证码有误,请重新输入");
409                console.log("验证码有误");
410                //alert("请按要求填写");
411                //return false;
412            }else{
413                that.show().text(data.message);
414                mm=false;
415                console.log(data.message);
416                alert(data.message+",请重新输入");
417                //return false;
418            }
419        }
420    })*/
421
422
423})
424$(".w_login").click(function(){
425    var n=$(this).parents("form").find("span:visible").length;  
426    //判断输入框是否全部填写
427    for(var i=0;i<$(this).parents("form").find("input:text").length;i++){
428        if($(this).parents("form").find("input:text").eq(i).val()==""){
429            alert("请补全信息");
430            return false;
431        }
432    }
433    //判断是否有不规范的输入
434    if(n!=1){
435       alert("请按要求填写");
436       return false;
437    }
438    if($(this).text()!=="登录"){return false;}
439    var username=$(this).parents("form").find(".log_name").val();
440    var userpass=$(this).parents("form").find(".pwd").val();
441    $(this).text("登录中...");
442    var that=this;
443    $.ajax({
444        url:newIp+"/pcUserOperation/login",
445        type: 'POST',   
446        data:{
447            "phone":parseData.enc(username),//"Vot15rV32PUoKgRWoMbjWw==",
448            "password":parseData.enc(userpass),//"V3Ov/zgQ1IEUaEepwQkfdQ==",
449            //"version":"xqhyYnyQvkvhA2GCpGiIBg",
450            //"equipment":"",
451            //"verificationCode":"",
452            "loginType":parseData.enc('0')
453            },  
454        headers:{
455            "Content-Type":"application/x-www-form-urlencoded",
456            "providerCode":"25010",
457            "version":"4.0.0",
458            "equipmentSource":"WEB"
459        },    
460        success: function(data){
461            //console.log(parseData.dec(data.replace(/\n/g,'')));
462            data=parseData.dec(data.replace(/\n/g,''));
463            $(that).text("登录");
464            if(data.rt==1){
465                closeAll();
466                //console.log(data);
467                $(".login").html(data.con[0]["nickName"]+'<a href="javascript:;" class="bye">退出</a>');
468                if($(".rember span").text()!=""){
469                    //$.cookie("logName",username, {expires: 7,path: '/'});
470                    //$.cookie("uid",data.con[0]["id"], {expires: 7,path: '/'});
471                    //$.cookie("logPass",userpass, {expires: 7,path: '/'});
472                    $.cookie("nickname",data.con[0]["nickName"], {expires: 7,path: '/'});
473                    var name=$.cookie("nickname");
474                    //console.log(name);  
475                }else{
476                    //$.cookie("logName",username, {path: '/'});
477                    //$.cookie("uid",data.con[0]["id"], {path: '/'});
478                    //$.cookie("logPass",userpass, {path: '/'});
479                    $.cookie("nickname",data.con[0]["nickName"], {path: '/'});  
480                }             
481            }else{
482                alert(data.des);
483            }
484        },
485        error:function(){
486            console.log("发送失败");
487        }
488    })
489
490})    
491$(".login").on("click",".register_btn",function(){
492    closeAll();
493    $(".mask").show();
494    $(".user_box").show();
495})
496$(".register_btn").click(function(){
497    closeAll();
498    $(".mask").show();
499    $(".user_box").show();
500})
501$(".mask").click(function(){
502    closeAll();
503})
504$(".login").on("click",".login_btn",function(){
505    $(".mask").show();
506    $(".user_box").hide();
507    $(".user_box3").hide();
508    $(".user_box2").show();
509})
510$(".login_btn").click(function(){
511    $(".mask").show();
512    $(".user_box").hide();
513    $(".user_box3").hide();
514    $(".user_box2").show();
515})
516$(".findCode").click(function(){
517	$(".user_box2").hide();
518	$(".user_box3").show();
519})
520/*$(".next").click(function(){
521    if(!mm){alert("请按照要求填写"); return false;}
522    var n=$(this).parents("form").find("span:visible").length;
523    //判断输入框是否全部填写
524    for(var i=0;i<$(this).parents("form").find("input:text").length;i++){
525        if($(this).parents("form").find("input:text").eq(i).val()==""){
526            alert("请补全信息");
527            return false;
528        }
529    }
530    //判断是否有不规范的输入
531    if(n!=0){
532       alert("请按要求填写");
533       return false;
534    }else{
535        console.log("全部符合要求");
536    }
537    $(this).parents("form").hide().next(".find2").show();
538})*/
539function closeAll(){
540    $(".mask").hide();
541    $(".user_box").hide();
542    $(".user_box2").hide();
543    $(".user_box3").hide();
544    $(".user_box input").val("").next("span").hide();
545    $(".user_box2 input").val("");
546    $(".user_box3 input").val("");
547    $(".w_login").text("登录");
548    $(".user_box2 .message form>div>span").hide();
549}
550$(".deal").click(function(){
551    var phoneNum=$(this).parents("form").prev("form").find(".phoneNum").val();
552    var password=$(this).parents("form").find(".pwd").val();
553    var that=$(this);
554    $(this).parents("form").prev("form").find(".phoneNum").val("");
555    $(this).parents("form").find(".pwd").val("");
556    $.ajax({
557        url:newIp+"/pcUserOperation/resetPassword",
558        type: 'post',  
559        //dataType : "jsonp",//数据类型为jsonp  
560        //jsonp: "callback",   
561        data:{
562            "phone":parseData.enc(phoneNum),
563            "equipment":parseData.enc("CCYT"),
564            "password":parseData.enc(password),
565            "randomCode":parseData.enc(u_yzm),
566            "resetType":1
567            },  
568        headers:{
569            "Content-Type":"application/x-www-form-urlencoded",
570            "providerCode":"25010",
571            "version":"4.0.0",
572            "equipmentSource":"WEB"
573        },     
574        success: function(data){
575            data=parseData.dec(data.replace(/\n/g,''));
576            if(data.rt!=1){
577                alert("密码重置失败,请重试");
578            }else{
579                closeAll();
580                $(".mask").show();
581                $(".user_box2").show();
582                $(".user_box2 .message form>div>span").hide();
583                clearInterval(timer);
584                $(".send").html("发送验证码");
585                ss=true;
586            }
587            that.parents(".message").find("input").val("");
588            //console.log(that.parents(".message").find("input"));
589            $(".message form").eq(0).show();
590
591        },
592        error:function(){
593            alert("密码重置失败,请重试");
594        }
595    })  
596    $(".find1").show();  
597    $(".find2").hide();  
598})
599function checkToggle(the){
600    $(the).html()?$(the).html(""):$(the).html("√");
601}
602$(".rember span").click(function(){
603    checkToggle(this);
604})
605$(".agree span").click(function(){
606    checkToggle(this);
607})
608//判断是否登录
609function isLogin(){
610    console.log("判断是否登陆"); 
611    if($.cookie("nickname")!="null"&&$.cookie("nickname")!=null){
612        //console.log(uid+"已经登录");
613        //console.log($.cookie("uid"));
614        //return uid;
615    }else{
616        $(".user_box2").show();
617        $(".mask").show();
618        return false;
619    }
620}
621//弹出控制器
622function showContro(){
623    $("#HiRadioPlayer").animate({left: '0'},300);
624    $("#rightArrow").animate({left: '906px'},300);
625    $("#rightArrow").css('background-position','-100px 0');
626}
627//删除全部数据
628function deleteAllVodOther(){
629    //console.log("删除全部数据?");
630    $.ajax({
631        url:'http://tacc.radio.cn/userpreference/cancecollectall',
632        type: 'GET',
633        dataType : "JSONP",
634        jsonp: "callback",
635        data:{'uid':uid,"token":"12345678"},
636        success:function(data){
637            //console.log(data);
638        },
639        error:function(){
640            //console.log("全部删除失败");
641        }
642    })    
643        $("#programList tr").each(function () {
644            $(this).children("td:nth-child(4)").children().children().attr("src","../image/icon_15.gif");
645    });
646}
647
648//搜索框获取焦点时显示搜索记录
649$("#searchAll").focus(function(){
650    var searchWord=$.cookie("searchWord")?$.cookie("searchWord"):"";
651    var str="";
652    searchWord=searchWord.split(",").reverse();
653    for(var i=0;i<searchWord.length;i++){
654        str+='<p>'+searchWord[i]+'</p>';
655    }
656    if(searchWord.length!=0){
657        $(".search_record").show();
658    }
659    $(".search_record").html(str);
660    //search_record
661})
662
663
664$("#searchAll").blur(function(){
665    $(".search_record").on("click","p",function(){
666        $("#searchAll").val($(this).text());
667        $(".search_record").hide();
668        if($(this).text()=="搜索节目"){
669           $("#searchAll").focus();
670        }
671    }) 
672    setTimeout(function(){
673        $(".search_record").hide();
674    },200);
675    
676})
677
678//otherLogin();
679function otherLogin(){
680    $.ajax({
681        url:newIp+"/pcUserOperation/otherLogin",
682        type: 'post',  
683        //dataType : "jsonp",//数据类型为jsonp  
684        //jsonp: "callback",   
685        data:{
686            "accountNumber":parseData.enc("775086610"),
687            "nickName":parseData.enc("略"),
688            "type":parseData.enc("1"),
689            "userSex":parseData.enc("-1")
690            },  
691        headers:{
692            "Content-Type":"application/x-www-form-urlencoded",
693            "providerCode":"25010",
694            "version":"4.0.0",
695            "equipmentSource":"WEB"
696        },     
697        success: function(data){
698            console.log(data);
699            
700            
701
702        },
703        error:function(){
704            alert("密码重置失败,请重试");
705        }
706    })
707}
708
709/**
710 * 异常情况提示弹窗
711 */
712$(function() {
713    var cookie_key = 'ERR_POPUP_SHOW', cookie_val = 'YES';
714    if (!$.cookie(cookie_key)) {
715      // 将弹窗元素添加到body中
716      var errPopup = '<div id="err-popup" class="err-popup-container">' +
717          '<div class="err-popup-title">提示</div>' +
718          '<div class="err-popup-content">若您遇到网站打开异常情况,请尝试清理浏览器缓存</div>' +
719          '<div class="err-popup-btn">好的</div>' +
720          '</div>';
721      $('body').append(errPopup);
722      // 获取元素
723      var $errPopup = $('#err-popup');
724      // console.log($errPopup.length)
725      if ($errPopup.length) {
726        $errPopup.fadeIn(); // 显示弹窗
727        // 点击按钮隐藏
728        $errPopup.find('.err-popup-btn').click(function() {
729          $errPopup.fadeOut();
730          $.cookie(cookie_key, cookie_val, {path: '/'})
731        })
732      }
733    }
734    //
735    var $certContainer = $('#cert-container');
736    if ($certContainer.length) {
737        $certContainer.find('a').each(function(i, el) {
738            window.location.origin
739            el.href = el.href.replace('../', window.location.origin + '/pc-portal/')
740            console.log(el)
741        })
742        
743    }
744});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.