浏览器乱码的原因是什么?如何解决
下面这个流程是我们写入文件到展示文件的简单描述:
- 我们使用编辑器编写 HTML 文件
- 保存编写的 HTML 文件
- 使用浏览器打开 HTML 文件
- HTML文件在浏览器展示
- 我们编写 HTML 文件时,如果在<html>中指定了<meta charset="gbk">,设定字符集为gbk
- 然后保存 HTML 文件时,编辑器用 utf-8 字符集保存
- 接着浏览器打开 HTML 文件时,它看到<meta charset="gbk">,这时候它就会用gbk字符集来解码你的 HTML 文档
- 由于utf-8和gbk对中文的编码方式不一样,那么HTML文件在浏览器中显示示出来肯定是乱码。
所以这里关于编码涉及到3个方面:
- HTML 文档中的<meta charset=""> 指定的字符集
- 编辑器保存文档使用的字符集
- 浏览器解析 HTML 文档使用的字符集
- 这里的关键在于2和3步,如果这两步的字符集不一样,那么英文以外的文字就会出现乱码。英文不会出现乱码是因为一般主流的字符集对英文使用的编码方式都是一样的,可以互相兼容。
- 而第3步浏览器解析 HTML 文档使用的字符集依赖于第1步 HTML 文档中的<meta charset=""> 指定的字符
- 那如果 HTML 文档没指定呢?那浏览器就会用自己的方式去猜要用哪个字符集来解析 HTML 文档,这里就可能会发生错误。
所以总结下如何解决浏览器乱码:
- HTML 文档一定要指定字符集为utf-8,因为这个字符集包括了世界上几乎所有的文字,没有理由不用它。<meta charset="utf-8">
- 编辑器保存文档使用的字符集一定要跟 HTML 文档指定的字符集匹配,也就是 utf-8