PHP中文乱码解决方案

2012 年 9 月 14 日8400

前言
PHP中文乱码是PHP开发中的常见问题之一,中文乱码现像有时发生在网页本身,有些产生在于MYSQL交互的过程中,有时与操作系统有关,下面进行总结。

一、 PHP网页的编码
最好最快的解决办法就是使页面申明的编码与数据库内部编码一致,如果页面申请的编码与数据库内部的编码不一致时,那就设定连接编码。Mysql_query(“set names ***”).

1、 php文件本身的编码与网页的编码应匹配,如果欲使用gb2312编码,那么php要输出头
header(“Content-type:text/html;charset=gb2312”)
静态页面添加
<meta http-equiv=”Content-type”content=”text/html; charset=gb2312”>,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。

2、 如果欲使用uft-8编码,那么php要输出头
header(“Content-type:text/html; charset=utf-8”),
静态页面添加
<meta http-equiv=”Content-type”content=”text/html; charset=utf-8”>,所有文件的编码格式为utf-8.保存为utf-8可能会有点麻烦,一般utf-8开头会有BOM,如果使用 Session就会出现问题,可用editplus软件来保存。在这个软件中,选择工具?参数选择?文件?UTF-8签名,选择总是删除,再保存就可以去掉BOM信息了。
3、PHP本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码。

在需要做数据库操作的PHP程序前加mysql_query(“set names 编码”),编码和PHP编码一致,如果PHP编码是gb2312那么mysql编码也就是gb2312,如果是uft-8,那么mysql中就是utf8.这样改过后就不会出现乱码了。

0 0