现如今,基本的web2.0应用都会涉及到表现层、业务层、数据层等多个层次。在数据的来回传递中,新手一不注意就会产生汉字的乱码问题。汉字乱码主要是由于各层使用的编码、或在层间进行数据传输时使用的编码不一致造成的,釜底抽薪的解决办法就是在一开始就将各层的编码都设置为一致的比如UTF-8或者GBK,对传输中引起问题的,再使用iconv等函数来转换。具体的做法是:
1.MySQL
-设置数据库、表、字段的字符集为GBK
2.PHP
-连接数据库,进行各种数据操作之前,先设置set names ‘gbk’
-在Php.ini文件中设置: default_charset = “gbk” ,使之在默认生成的html文档前加入字符集编码
-header(“Content-Type:text/html; charset=gbk”) ,作用同上
3.HTML
-<meta equiv="Content-Type" content="text/html; charset=GBK">,告诉浏览器,本页面使用的字符集是gbk的,请按照gbk编码进行解析
4.AJAX
-get方式提交数据时正常;POST方式时,数据传输默认使用UTF-8字符集
-所以PHP在接受post的提交后需要用iconv(‘utf-8’,’gbk’,$str)转换一下
需要注意的是:PHP文件本身保存的格式也需要一致。在记事本等文本编辑器中,保存文件时,可以选择保存的编码方式。