PHP输出中文乱码解决:编码终结者

学习PHP之初,根本就没有意识到过有编码那回事儿,随着对中文的输出愈来愈多,遇到输出乱码的状况也就更加广泛了。最先咱们怀疑是数据库编码的问题,因而在PHP代码中的解决的办法是:
mysql_query("SET NAMES UTF8");   

但这样作了后,网页显示的仍然是乱码,因而有修改网页头部信息:
header('Content-type:text/html;charset=UTF8');

顺便还找到条其余命令,也不知道能起到什么做用,反正遇到乱码的时候就把它加进去,解决问题便可:
declare(encoding='UTF-8');

还有一种状况,是文件编码与输出编码冲突,例如PHP文件编码是ANSI(若是你用windows记事本建立的PHP文件,默认就是ANSI),虽然我也不知道ANSI具体是什么,但咱们但愿输出的是UTF-8,因此,仍是乱码了,因而,又在浏览器显示编码中设置网页显示编码为UTF-8:
html




问题到此,基本可以解决显示乱码的现象了!mysql

可是,我以为不该该就此结束!由于咱们之后还会遇到编码冲突的状况,有没有防患于未然的方案呢?sql

我大胆地思考这个问题,而后百度了一下“PHP转换字符串编码”,果真有对应的函数能够解决这个问题!数据库


那就是:windows

mb_detect_encoding — 检测字符的编码,和mb_convert_encoding — 转换字符的编码,这两个函数。浏览器


关于这两个函数的用法,请各位本身去搜索吧,PHP手册里面也很详尽,我就不在此占用篇幅了。ide


另外还有个函数:iconv,它的效率比mb_convert_encoding 高,但功能没mb_convert_encoding 好,了解后你本身取舍吧!函数


但,通过本人研究了一两天,貌似这两个函数并没如我所愿地把字符串随意地转换成GBK,GB2312,UTF-8的编码,也许是个人“打开方式不对”?总之,方法找到了,只是用法还没掌握,也就是时间的问题而已啦。学习


因此,在此分享本人的经验,但愿能帮小白清除这方面的疑惑,也欢迎大牛在此补充指教哈!编码

相关文章
相关标签/搜索