大概从上个月开始,我发现在微信里跟朋友聊天时,发出去的表情包或者系统自带的小黄脸,显示出来的样子有些不太对。不是那种网络延迟转圈圈,而是明明我发的是一个咧嘴笑,对方回我一个问号,说我发了个空白或者方框。我自己这边看历史记录,有的表情直接变成了一个带叉号的图片图标,点开也加载不出来。
一开始我以为是手机内存不够了,毕竟用了快两年没怎么清理。于是我花了一个晚上,把相册里几百张截图删了,又卸载了两个不怎么用的App,腾出来大概10个G的空间。结果呢,重启微信再去看那些表情,该是方框还是方框,该裂开还是裂开。这时候我才意识到,问题可能不在存储空间上。
后来我仔细回想了一下,这些出问题的表情,大部分是在地铁、电梯或者地下车库里发的。当时信号确实不好,经常显示一个圆圈在转。我就怀疑是不是表情包在发送或者接收的过程中,因为网络中断导致数据包损坏了。为了验证这个想法,我特意跑到窗边,连着满格的Wi-Fi,把之前那个裂开的表情重新发了一次。结果新发的那个就好好的,但是历史记录里那个坏的还是坏的。这说明网络问题可能导致了当时那次传输失败,但已经存下来的坏数据,并不会因为网络恢复而自动修复。
既然跟网络有关系,那是不是清一下微信缓存就能解决?我试了。在微信的设置里找到存储空间,点清理缓存,等它转完圈,再回去看聊天记录。有一部分表情确实恢复了,但还有大概三分之一,依然是老样子。这时候我开始怀疑,是不是微信版本的问题。我打开应用商店,发现微信确实有更新,我就顺手更新到了最新版。更新完重启手机,再去看那些坏掉的表情,发现大部分都能正常显示了,但有几个自定义添加的表情包还是不行。
说到自定义表情包,我这才想起来,有几个出问题的表情是我从网上别人发的文章里长按保存的,不是从微信表情商店里下的。会不会是这些第三方来源的图片格式跟微信最新版不兼容?我试着把其中一个坏掉的表情删除,然后重新从那个网页里保存一次,再添加到自定义表情里,发现就能正常使用了。所以啊,微信表情显示异常,不一定全是微信的锅,也可能是你存的那些图片本身格式有问题,或者来源网站做了防盗链处理,导致下载下来的文件不完整。
还有一种情况,我是在我爸妈的手机上发现的。他们用的还是好几年前的安卓系统,微信版本也比较老。我给他们发一个比较新的Emoji表情,他们那边显示的就是两个方框。这不是手机坏了,纯粹是系统自带的字体库太旧,不认识新的Unicode编码。这种属于系统兼容性问题,要么升级手机系统,要么更新微信,不然真没什么好办法。我试着给他们手机装了一个第三方字体,稍微好了一点,但有些偏门的符号还是显示不出来。
排查到这一步,我总结了一下,如果你也遇到表情有些不太对,可以按这个顺序试试:先确认是不是网络不好时发的,如果是,让对方重新发一次,或者你删掉那条消息让他重发;接着清一下微信缓存,这个操作很简单,而且不影响聊天记录;然后去应用商店看看微信有没有更新,有就更新;最后再检查是不是自定义表情包源文件的问题,删了重新添加。如果以上都不行,而且只是在某一个特定聊天窗口里显示不对,那有可能是这个聊天记录文件本身损坏了。这时候可以试试用电脑版微信登录,看看在电脑上显示是否正常,如果电脑正常,那大概率是手机端那个聊天数据库文件有损坏,备份好聊天记录后卸载重装微信,基本能解决。
反正我最后是靠卸载重装解决的,但前提是我先把重要的聊天记录用电脑备份了。折腾了这么一大圈,我觉得微信在表情数据的本地缓存和损坏修复机制上,确实还有改进空间。作为普通用户,遇到这种问题最怕的就是不明所以地乱删东西,结果问题没解决,重要资料倒丢了。
补充方案
在排查表情问题的过程中,我还发现一个关联的小麻烦。就是有些表情是GIF动图,我想把它保存下来发到别的群里,或者做成手机壁纸。用微信自带的保存功能,有时候存下来的图会变得很模糊,甚至只有第一帧是静态的,动都不动。后来我为了处理这些动图和视频,用过一款叫“FFmpeg”的命令行工具。这玩意儿是个开源软件,懂点电脑知识的人用起来很方便,可以把损坏的GIF重新编码,也能把视频截取某一帧做成静态图,甚至能批量转换格式。
它的优点很明确:免费、功能强大、没有广告,而且能处理很多微信搞不定的格式问题。我那个裂开的表情包,就是用这个工具重新转码后,再导入微信,就能正常显示了。不过它的限制也相当明显,首先没有图形界面,全靠敲代码命令,对不熟悉电脑操作的人来说,上手门槛很高。我第一次用的时候,光查参数就花了半天。其次,它只能处理你本地已经下载好的文件,如果微信聊天记录里那个图片本身数据就是坏的,你导出来也是坏的,这时候得先让朋友重新发一次原图才行。所以它适合解决文件格式和编码问题,但解决不了网络传输和数据损坏的根本问题。
如果你不想折腾命令行,那还是老老实实按我前面说的步骤,先更新微信,再清缓存,最后再考虑重装。工具只是辅助,大部分时候,微信自己就能修复好。