你想反馈一个 Bug
一、* Bug 表现是什么?预期表现是什么?
同样的数据,"周六"的“六”在开发者工具中是正常的,但到了我的手机上显示为乱码
开发者工具上显示(选的iphone6作为模拟器):
手机上显示(华为Mate9):
二、* 如何复现?
后台返回1,2,3,4,5,6,7 的字符,通过前端进行格式化,其中只要“周六”和其他的星期一起出现就显示出乱码了。但单独只有“周六”时正常,将“六”换为“6”显示也正常。
前端格式化代码如下:
function formatRepeat2(repeat2){ if (repeat2 != undefined && repeat2 != '' ) { if (repeat2.indexOf( ',' ) > -1) { var total = '' ; var arrRepeat2 = repeat2.split( ',' ); for ( var j = 0; j < arrRepeat2.length; j++) { if (arrRepeat2[j] == '1' ) { total += ' 周日' ; } else if (arrRepeat2[j] == '2' ) { total += ' 周一' ; } else if (arrRepeat2[j] == '3' ) { total += ' 周二' ; } else if (arrRepeat2[j] == '4' ) { total += ' 周三' ; } else if (arrRepeat2[j] == '5' ) { total += ' 周四' ; } else if (arrRepeat2[j] == '6' ) { total += ' 周五' ; } else if (arrRepeat2[j] == '7' ) { total += ' 周六' ; } } return total; } else { if (repeat2 == '1' ) { repeat2 = ' 周日' ; } else if (repeat2 == '2' ) { repeat2 = ' 周一' ; } else if (repeat2 == '3' ) { repeat2 = ' 周二' ; } else if (repeat2 == '4' ) { repeat2 = ' 周三' ; } else if (repeat2 == '5' ) { repeat2 = ' 周四' ; } else if (repeat2 == '6' ) { repeat2 = ' 周五' ; } else if (repeat2 == '7' ) { repeat2 = ' 周六' ; } return repeat2; } } else { return '' ; }
that.data.listlog[i].repeat2 = formatRepeat2(repeat2); |
三、* 提供一个最简复现 Demo
见以上
目前推断是 es6 转 es5 时中文处理不对导致出现乱码,仅在一部分pc预览、上传项目时出现,具体原因还在排查中。
问题规避方案:对乱码字符串所在的 js 文件稍作修改,如增加一些无意义的函数调用、调换一些逻辑顺序等,都有可能规避问题。
@文豪
能不能另开一帖详细描述下你的问题?请在下方回复一下你的新帖链接。
感谢,已收到。
依旧不能复现,太奇怪了。
怀疑是有文件分块时截断问题。能否告知有问题时“六”这个字符位于这个文件的第几个字节呢?
黑人问号。
这个问题比较诡异,可能是之前的代码触发了一些奇怪的bug导致。
你好,请问有在其他手机上复现这个问题吗?
昨天差点被这个bug坑死,
有一处中文字符串判断一直不过,
后来关了ide重新打开就正常了!
@郑竣鸿 23楼的兄弟:
谢谢帮我进行了代码检视!很多年未被代码检视过了,呵呵,虽然这个不重要,还是谢谢了! :)
楼主你这个改成switch循环不是更好吗,虽然不知道问题在哪里。