Eclipse编写html——讨论charset设置

今天我们讨论html的meta元素中charset的含义。

在Eclipse的开发环境下,如果用户在编写html页面, 页面源码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="gbk">
<title>菜鸟教程</title>
</head>
<body>

<form action="index.jsp" method=GET>
站点名: <input type="text" name="name">
<br />
网址: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>

</body>
</html>

然后用chrome浏览器(可以尝试用别的浏览器)打开,打开后如下所示出现乱码:

这里的原因是eclipse创建的html源文件,在保存字符时采用的是UTF-8编码方式(eclipse是可以配置默认采用什么编码方式的,这里假设默认是采用UTF-8的编码方式)。浏览器会在打开html时读取charset设置的参数,此时为GBK,就会采用GBK编码方式去呈现字符,GBK在英文的时候不出问题,遇到中文的时候就出问题了,这是因为它将UTF-8编码的汉字用GBK的方式去呈现,而两者的编码是完全不兼容的,因此出现了乱码。

有趣的地方是,如果你用eclipse和其他文本编辑器打开,比如用notepade++是可以正确显示中文,如下图:

并且还能识别出html源码是UTF-8编码方式,所以编辑器本身是能够正确显示中文,原因是大部分文本编辑器,包括微软自带的记事本,他们都会去扫描文本的二进制,用最可能最接近的编码方式去识别文本的字符(感觉就像是套用,所以有时候本文编辑器自己也会无法识别字符而出现乱码,有兴趣的可以去百度一下著名的"联通"案例),另外,因为文本编辑器就是个普通编辑器(文本编辑器根本不会去关心你编写的是个html,还是个java文件,还是个c文件),因此,文本编辑器当然就不会去识别charset的配置值的。我们可以用二进制方式去查看文本文件,如下图所示:

你可以看到红色圈中的地方,十六进制e7ab99,本文编辑器是会自动根据内部的识别机制(这个机制应该是采用最可能的方式)识别为该文本文件为UTF-8,因此可以正确识别汉字,对应的UTF-8编码汉字就是""。我们也看到如果用GBK方式编码,e7ab编码值与汉字“”所对应,这刚好与chrome浏览器打开是一致的,浏览器不是不够聪明,而是因为浏览器会先去查看charset的设置,然后按照设置去"理解"字符。因此,如果想要浏览器正确理解你的字符,就必须保证文本文件保存的编码格式和charset的配置值一致。

本例子,只要将charset设置值改为UTF-8就可以了。

参考网站:

GBK汉子编码查询网址

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值