php编程技术的乱码解决
PHP中文乱码是软件编程新手在进行PHP开发中的常见问题之一,中文乱码现像有时发生在网页本身,有些产生在于MYSQL交互的过程中,有时与操作系统有关,下面进行总结:
最好最快的解决办法就是使页面申明的编码与数据库内部编码一致,如果页面申请的编码与数据库内部的编码不一致时,那就设定连接编码。Mysql_query(“setnames gb2312”) 或者 Mysql_query(“setnames utf8”)。
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.这样改过后就不会出现乱码了。
4、header和meta之间区别。首先,header是php的内置函数,而meta是html的信息。其次,apache在给浏览传递网页编码内容时,如果发现php文件使用header设置网页显示编码则将不会再解析meta设置的编码。最后,如果你写的代码是这样,php文件header(“Content-type:text/html; charset=gbk2312”),静态页面添加<meta http-equiv=”Content-type”content=”text/html; charset=utf-8”>,浏览会默认显示为gbk2312而不是utf-8。这些规则是apache和php之间的协议。