1、出现的原因:
计算机 存储 的任何内容都是以二进制 0 1 保存的,比如说:假设 “中国” 两个字,在保存的时候是保存为1010101110001,但在读取的时候(也就是从 “1010101110001” 到 “中国”的过程),计算机会把这个二进制的编码转化为原来的内容,即“中国”两个字,这是编码和转码的问题。
其中的转换规则叫字符集(编码和解码采用的规则),如果使用A字符集去编码,使用B字符集去解码,这样就出现乱码了。也就是说,二进制数:1010101110001在A字符集中对应表示的是“中国”,但是在B字符集中可能对应的就是“烫烫烫烫”了。
2、常见的字符集
常见的字符集:
- ASCII(美国)
- ISO-8859-1(欧洲)
- GBK(中国,GB是国标的意思)
- GB2312(同样是中国。GB也是国标、并且是中文系统的默认编码)
- UTF-8(又叫万国码)
- ANSI,是自动编码的意思,意思是在中文系统中,就是默认的GB2312,在英文系统中就是ASCII编码。
在中文系统的浏览器中,默认都是采用GB2312进行解码。
ASCII码是最早的字符集:采用7位的存储,共128个字符,这是美国的,因为加上英文字母的大小写,再加上各种标点符号,美国已经够用了。但是中国,和其他的国家不能用啊,所以,陆续出现了许多的编码规范,由因为种类太多了,使用起来没有一个统一的标准,后面又出现了统一的编码规范 : utf-8。
3、解决乱码的两种方法
第一种:在中文系统中更改编码的为GB2312,可以在notepad++中,格式菜单下,找到字符集,找到中文,选择GB2312,即可(注意原本就有的内容依然会是乱码,因为这个文件是已经解码出来得到的,所以修改格式都是先把需要更改的内容剪切,然后再更改html文件编码格式,再粘贴内容即可。那是因为前面的内容已经打出来了,已经编码了,更改后只能更改修改编码格式之后的内容。)这样的局限性太大。
第二种:改解码格式,在head标签里面使用<meta>标签修改,meta的意思
是元,这个标签用来设置网页的一些元数据。
注意:meta标签是一个自结束标签(或者叫自闭合标签),编写一个自结束标
签,可以在开始标签里面的后面加上 / 如:<meta />
比如设置编码使用:<meta charset=”UTF-8” />
char 的意思是字符,set 是集合的意思,
这里的utf-8 并不是乱写的,这里设置的意思是
告诉浏览器你的编码方式是utf-8,所以他就会使用utf-8进行解码。