1、解决页面中的乱码问题
两种方法:
(1) 使用meta标签设置页面编码
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
meta标签的作用是声明客户端的浏览器用什么字符集编码显示该页面,其中charset可以设置为GB2312、GBK、UTF-8等。大部分的页面都是通过这种方式来告诉浏览器显示这个页面时采用什么编码。
(2)通过header()函数设置页面的编码格式
header("content-type:text/html; charset=utf-8");
header()函数的作用是把括号内的信息发送到http标头。通过header()函数设置charset的值来指定页面的编码格式,其作用与meta标签是相同的。但不同之处是,如果同时使用header()函数和meta标签来设置页面的编码格式,浏览器会采用header()函数指定的编码格式,而不会使用meta标签设置的编码格式,这就是header()函数的特殊之处。header()函数多数应用在纯PHP的文件中,通过它来设置文件的编码格式。
2、数据库中的字符集编码问题
通过PHP操作数据库中的数据时,如果网页中使用的是UTF-8编码,那么就可以在连接数据库的文件中执行mysql_query("SET NAMESUTF8")这个语句,指定数据库的编码为UTF8,这样在读取出的中文数据就不会出现乱码的问题。也就是说,保证页面编码格式与数据库中输出数据的编码格式一致就不会出现乱码的问题。同样在向数据库中添加数据时,也要保证编码格式的统一。
3、避免截取中文字符串时出现乱码
推荐mb_substr()函数,通过它对中文字符串进行截取,就可以避免在截取中文字符串时出现乱码。
string mb_substr(string str, int start [, int length [, string encoding]])
//start: 指定截取的开始位置,从0开始计算。
//length: 截取字符串的长度。
//encoding: 设置返回字符串的编码格式
mb_substr()函数截取字符串时,一个英文字符串即为一个字节,而一个中文汉字同样也定义为一个字节。
mb_strlen — 获取字符串的长度
mixed mb_strlen ( string $str
[, string $encoding
= mb_internal_encoding() ] )
返回具有 encoding
编码的字符串 str
包含的字符数。 多字节的字符被计为 1。
如果给定的 encoding
无效则返回 FALSE
。