JavaScript 中文乱码怎么解决
在做网页开发时,你可能遇到过这种情况:明明写好的中文文字,在浏览器里却变成了一串看不懂的问号、乱码方块,连提示文字都变得莫名其妙,不仅影响用户体验,还可能让页面功能出问题。这就是JavaScript中文乱码,是前端开发里很常见的小麻烦,别担心,只要从几个关键细节入手,就能轻松解决。
先检查文件本身的编码格式
乱码最直接的原因,往往是你保存文件时,用的编码和浏览器打开时识别的编码不一样。就像你用中文记事本写了一篇文章,却存成了只能用日文打开的格式,自然会看不懂。

比如你用VS Code写JS脚本,默认可能是UTF-8编码,但如果不小心改成了GBK,浏览器打开时就会识别错误。最简单的检查方法:在VS Code右下角,会显示当前文件的编码,点击后选择“保存用UTF-8”就行;如果用的是记事本,保存时在“编码”下拉框里选“UTF-8”,别选ANSI或其他编码。这一步是基础,很多小乱码问题改完就好。
给HTML文件加对编码声明
就算JS文件编码是对的,如果没告诉浏览器该用什么编码解析,还是会乱码。这就像你没给邻居说你写的是中文信件,邻居拿日文词典翻,肯定不对。
只要在网页的<head>标签里加一行<meta charset="UTF-8">就行,这行代码的作用就是告诉浏览器,整个页面的字符编码是UTF-8,包括里面的JS代码。如果漏了这行,或者写错成<meta charset="utf8">(少了横杠),浏览器可能会默认用GBK之类的编码解析,中文就会乱。注意这行要放在<title>标签前面,不然部分浏览器可能识别不到。
引入外部JS文件时指定编码
如果你的JS代码是单独的.js文件,用<script src="xxx.js"></script>引入时,很容易忽略一个细节:没给这个脚本指定编码。就像你寄了一张写着中文的卡片,却没说该用什么语言解码,收件方可能乱认。
正确的写法是给<script>标签加charset属性,比如<script src="xxx.js" charset="UTF-8"></script>。要是你省略这个属性,浏览器会默认按页面的编码解析外部JS,要是文件本身编码和页面不一样,还是会乱码。比如页面是GBK,JS文件是UTF-8,加了charset="UTF-8"就能统一。
避免用转义替代中文
有些开发者为了省事,会把中文转成Unicode转义符,比如把“你好”写成\u4F60\u597D,虽然这样不会乱码,但代码可读性太差,后期维护容易出错。比如你要改提示文字,总不能对着一串数字猜原来的意思吧?
直接写中文反而更简单,只要前面三步做好,就不会乱码,没必要多此一举用转义符。除非遇到特别老的浏览器(比如IE6),对UTF-8支持不好,才需要临时用转义符,但现在几乎没人用这类浏览器了。
最后再提个小提醒:如果是动态生成的中文,比如用JS往页面插 你好,只要确保生成的上下文(比如后端返回的编码)也是UTF-8,就不会乱。比如用Node.js输出内容时,要设置res.setHeader('Content-Type', 'text/html; charset=utf-8'),和前面的步骤保持统一。
按这几个步骤排查,不管是静态JS里的中文,还是动态生成的中文,基本都能解决乱码问题。