UTF-8,GBK,UTF8,gb2312 简介
UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF-8字符集的浏览器显示。如,如果是UTF-8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码使用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定为1.GBK包含全部中文字符,是国家编码,通用性比UTF-8差,不过UTF-8占用的数据库比GBK大。
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
如何解决PHP中文乱码问题
1、解决HTML中中文乱码方法
① 在head标签里面加入UTF8编码(国际化编码):UTF-8是没有国家的编码,独立于任何一种语言,任何语言都可以使用。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
② 将文件的编码存为UTF-8。记事本或编辑器都有保存时选择编码的功能。
2、HTML与PHP混合的页面解决方案(同样适用与纯PHP文件的乱码页面)
除了按照上述方法所说的操作之外,还需要在文件的最上面加入这句代码:
<?php header("Content-type:text/html;charset=utf-8");?>
3、PHP+MySQL中文乱码问题
除了2中方法操作之外,还需要在数据库curd操作之前加入数据库编码。
<?php mysql_query("SET NAMES UTF8")?>
4、正确显示上传的附件中文名
iconv("UTF-8", "gbk",$name)