《对Unicode的简单研究和了解 Version1.0》的补充和勘误

之前我提到“网页保存成什么格式并不重要,重要的是你要告诉浏览器这个网页的编码是什么。计算机也不会自动地猜对你的编码。”

但是有一天我不小心把一个charset=utf-8的网页保存成了ANSI格式,开始还觉得奇怪,我明明用meta标签声明了网页编码,还怎么会乱码呢?

原来之前我的想法是错误的,网页保存的格式也同样重要。即使是Unicode,保存成UTF-8和UTF-16文件在2进制的时候就已经不一样了。

再拿之前的例子举例:

“他”以UTF-8无BOM格式保存的时候,2进制下是:11100100 10111011 10010110

但是以UTF-16小端序保存的时候,2进制下是:11111111 11111110 11010110 01001110

不一样的数据,当然要不一样的编码才能正确解释了。

 

在使用PHP的fopen()函数也是,如果一个网页是UTF-8编码格式,那么你读取的文件也必须转成UTF-8格式,否则就会乱码。这时候就必须使用iconv函数转换编码。

 

总结:要使网页不乱码,首先META声明是必要的,其次是网页的保存格式。如果你用的是本地语言,比如中文,meta里必须使charset=gbk或者gb2312,网页保存成ANSI格式。如果用的是UTF-8编码,除了在meta里声明charset=utf-8以外,网页也必须以UTF-8格式保存。

如果使用了MYSQL数据库,也必须设置好数据库的连接方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值