HTML中UTF-8的声明方法
对于HTML文件编码的声明,主要有两种方法:
- 文件内meta声明
- 服务器端charset设置
一、文件内meta声明
meta声明也有两种方法:
<meta charset="utf-8">
和
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
其中上述短一些的是HTML5推荐声明方法,而长一些的则是普遍采用的HTML4声明方法。
而实际上,目前推荐的是用短版的,实际上几乎所有的浏览器都支持短版声明方法,甚至IE6也支持。
注意:meta声明语句必须紧跟在<head>后。
二、服务器端charset设置
HTTP服务器端设置比较不常用,但实际上效果可能更好。
对于nginx而言,只需要在
server {
...
}
字段内增加
charset utf-8;
即可为此server所有html文件声明UTF-8编码,具体可在响应HEADER中Content-Type字段看到编码声明。
这样做就可以免去在HTML中声明编码。
三、混用文件内meta声明和服务器端charset设置
当然一般情况下是不推荐两次声明的,如果声明的编码方法一样倒是没啥问题,但如果服务器短和文件中编码声明不一样,就会有意想不到的效果了。
总的来说,浏览器会以服务器端编码声明为准,而忽略文件内声明。即,如果HTML文件声明编码为gb2312,且文件编码格式确实为gb2312,但服务器端设置为UTF-8,则服务器按UTF-8解析,结果是乱码。
四、不进行编码声明
不进行编码声明,则浏览器会采用缺省设置,如中文环境下chrome缺省设置为gb2312。