ios+打开本地html乱码,IOS 使用 WKWebView 加载本地的JS和CSS文件出现乱码问题

####发现问题 最近项目中使用到HTML5和原生的混合开发,项目在IOS10上面运行正常,在IOS8下遇到了兼容性的问题,HTML5页面可以加载出来,只是页面样式丢失,并且JS脚本执行不了,所以只能调试看下是否有问题(这篇文章有介绍Safari连接IOS设备调试,推荐使用Safari调试,Chrome调试会有问题)。

使用Safari调试器查看HTML文件显示正常

3ec909a7f4d52669c9957e3692228e59.png

但是JS文件和CSS文件显示变成了乱码,这就很好解释了为什么页面没有样式和JS执行也有问题了。

18e1266ddec495681fb98d9c21d5c7f3.png

56fd10da7214fdec0c9483b53aab21e6.png

####找到原因

网上搜索了相关资料,确实也有人遇到(别人遇到类似的问题),不过他的解决办法是把JS/CSS文件放到服务区,本地保存HTML文件,这种方法解决感觉也太曲线救国了,既然是文件出现了乱码很有可能是文件的编码有问题,所以从这里入手试试看。

网上找到一个工具Notepad++可以设置很多的编码格式,下载软件打开CSS文件,发现文件的编码是 UTF-8无BOM格式,尝试转换为 UTF-8格式的

db61f8b00ec966c3303658da548cfab4.png

文件的内容没有变化,但是使用16进制可以看到前面添加了3个字节的内容,这就是BOM头

6d0b964dde02da0fad7f8b3ba3c41475.png

####问题的解决

替换为转换编码之后的文件,iOS8上可以正常的加载CSS和JS了,可以直接使用Notepad++转换编码或者直接使用Xcode打开二进制编辑,在文件的开头加上3个字节 EF BB BF ,然后保存,这样就加上了BOM头。

47ac2aeaecfe6f869d5f091b7506cf39.png

####一个解决问题的脚本

这种问题当然得用自动化的方法解决,所以,有了下面的shell脚本,在xcode中添加一个run script,粘贴修改如下代码即可,files数组中保存的是你项目中js和css文件的路径,文件路径相对于项目的根目录

files=("./mmosite/Resources/web-contents/css/news-style.css" "./mmosite/Resources/web-contents/js/news-script.js")

for fileName in ${files[*]}

do

sed -n '2p' $fileName

echo "fileName=${fileName}"

ret=`hexdump -s 0x0 -n 3 $fileName`

echo $ret

ret=${ret:8:9}

echo $ret

if [ "$ret" = "ef bb bf " ]

then

echo "OK"

else

echo "FAIL"

echo -n -e \\xEF\\xBB\\xBF | cat - $fileName > temp && mv temp $fileName

fi

done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值