昨天下午帮朋友看他刚上线的小站点,一打开就看到一堆乱七八糟的方块和看不懂的字符,朋友当时就慌了,说十分钟前打开还好好的,怎么突然变成这样,这不就是活生生的网站突然乱码怎么办现场吗?刚好我前前后后处理过四五次这种问题,有简单的也有稍微折腾点的,今天就把我实际踩坑踩出来的经验唠给大家听,不用记什么复杂公式,照着一步步试就行。

网站突然乱码怎么办的常见原因
先说大方向,乱码这事儿百分之九十都是编码不匹配搞出来的,剩下百分之十里有一半是缓存,还有一点是配置错了,极小概率是被挂马改了代码。什么叫编码不匹配?简单说就是你写网站用的是UTF-8,结果服务器传的时候告诉浏览器这是GBK,浏览器就按GBK解析,出来的自然就是乱码。或者你迁移网站的时候,数据库原来用的是latin1默认编码,导入新数据库的时候选成了UTF-8,那存进去的中文自然就变成乱码了。我之前就碰到过一个做美食博客的朋友,搬站之后所有文章标题都变成了乱码,折腾了大半天,最后发现就是导入数据库的时候编码选反了,重新导一次就好,说出来都觉得好笑,就是这么小一个事儿。还有一种情况,新手改网站模板的时候,不小心把HTML头部的编码声明给删掉了,浏览器找不到编码声明,就只能自己瞎猜,猜不对可不就乱码了嘛。
先试试浏览器端的快速排查
遇到乱码先别着急去改服务器改代码,先从最简单的地方试,五分钟就能排除好多低级问题。第一步,换个浏览器打开看看,比如你原来用Chrome,换成Edge或者Firefox再试,如果别的浏览器打开正常,那十有八九就是你原来浏览器的缓存捣鬼。清缓存怎么清?不用找什么设置菜单,直接按Ctrl+Shift+R强制刷新,大部分情况刷新完就好了,真不行再去设置里清一遍缓存,这个操作真的解决了我一半碰到的乱码问题。要是换了浏览器还是乱码,按F12打开开发者工具,看一下网页的响应头,里面有个Content-Type,看看是不是带着charset=utf-8,如果没带,那就是服务器配置出问题了,如果带了还是乱码,那就要去看程序和数据库了。
检查服务器配置是不是出了错
很多人买了新服务器,搭环境的时候没注意编码配置,结果就出问题。拿最常用的Nginx来说,很多人装完Nginx,配置文件里根本没加默认编码的声明,你可以去nginx.conf里看看,有没有这一行:add_header Content-Type ‘text/html; charset=utf-8’;或者在server块里加charset utf-8; 要是没有加上就行,重启Nginx之后再打开看看。如果是Apache,那就是要检查httpd.conf里有没有AddDefaultCharset UTF-8这行,没开的话加上就行。还有一种情况,就是你用了CDN,CDN会缓存静态页面,如果CDN缓存了旧的错误编码页面,那也要清一下CDN缓存,等个三五分钟再刷新就能好。我上个月碰到过一个用户,用了免费CDN之后突然全站乱码,清了浏览器缓存没用,最后清了CDN缓存就好了,就是这么简单。
排查程序和数据库的编码问题
要是服务器配置没问题,那就要看网站本身的程序和数据库了。先看网页源码,最顶部的<head>标签里,有没有<meta charset=”UTF-8″>这一行,很多新手改模板的时候,删东西不小心把这行删掉了,没有这行,浏览器就不知道用什么编码解析,自然容易出乱码,加上去就好了。如果是动态网站,用了数据库,那就要看数据库和数据表的编码是不是统一。比如你用phpMyAdmin管理数据库,打开对应的数据库,看一下各个表的编码是不是都是utf8_general_ci或者utf8mb4_general_ci,如果有表不是,就改过来。要是整个数据库编码不对,那就要导出旧数据,重新建一个编码正确的数据库,再导进去。这里提醒一下,导出数据库的时候,最好选对编码,别导出的时候就错了,那导入进去肯定还是乱码。还有一种情况,就是网站程序本身的配置文件里写了 wrong 编码,比如WordPress里的wp-config.php,有没有define(‘DB_CHARSET’, ‘utf8’);这行,要是写成了别的,改过来就行。还有一些老网站原来用GBK编码,后来转UTF-8没转干净,也会出一部分乱码一部分正常的情况,这种就得批量转码了,网上也有现成的工具,不难找。对了,还有人用了 windows 系统里的记事本改代码,存的时候默认带了BOM头,也会导致乱码,这个问题碰到的人不多,但真碰到了也挺头疼,换个代码编辑器比如VSCode,存的时候选不带BOM的UTF-8就能解决。
说了这么多,其实大部分乱码真的都是小问题,不是网站崩了也不是被攻击了,就是哪里配置没对上而已。先从最简单的浏览器缓存开始试,一步步往下排查,大概率十分钟就能搞定,真要是碰到那种迁站之后全表乱码的情况,稍微多花点时间重新导一遍数据库也就好了。当然,要是你实在搞不懂这些配置,找个专业的人帮忙也没问题,但别上来就慌,先自己试试这几个方法,说不定就省了一笔服务费呢。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!