欢迎来到天天文库
浏览记录
ID:5331088
大小:39.00 KB
页数:5页
时间:2017-12-08
《史上最全php+mysql中文乱码解决方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、我相信PHPmyadmin里查看是乱码,调用出来的话肯定100%也是乱码。乱码问题其实也就是编码不一致导致的。要解决这个问题需要回顾乱码问题出现以前的操作是否使用的是同一种编码。总之一句话,要解决PHP中文乱码最好最快的解决办法就是:页面申明的编码与数据库内部编码一致,如果页面申请的页码与数据库内部编码不一致时,就设定连接编码mysql_query(”SETNAMESXXX”);XXX为连接编码。一定可以解决乱码的问题。在mysql+php程序开发中,总结了产生乱码原因:mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.MYSQ
2、L中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.如用户输入资料的页面是big5码,显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.PHP页面字符集不正确.PHP连接MYSQL数据库语句指定的编码不正确.一.首先是PHP网页的编码1.php文件本身的编码与网页的编码应匹配a.如果欲使用gb2312编码,那么php要输出头:header(“Co
3、ntent-Type:text/html;charset=gb2312″),静态页面添加,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。b.如果欲使用utf-8编码,那么php要输出头:header(“Content-Type:text/html;charset=utf-8″),静态页面添加4、>,所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用session就会出问题,可用editplus来保存,在editplus中,工具->参数选择->文件->UTF-8签名,选择总是删除,再保存就可以去掉BOM信息了。二.PHP与Mysql的数据交互PHP与数据库的编码应一致1.修改mysql配置文件my.ini或my.cnf,mysql最好用utf8编码[mysql]default-character-set=utf8[mysqld]default-character-set=utf8default-storage-eng5、ine=MyISAM在[mysqld]下加入:default-collation=utf8_bininit_connect=’SETNAMESutf8′2.在需要做数据库操作的php程序前加mysql_query(”setnames‘编码’”);,编码和php编码一致,如果php编码是gb2312那mysql编码就是gb2312,如果是utf-8那mysql编码就是utf8,这样插入或检索数据时就不会出现乱码了。三.PHP与操作系统相关Windows和Linux的编码是不一样的,在Windows环境下,调用PHP的函数时参数如果是utf-8编码会出现错误,比如move_uploa6、ded_file()、filesize()、readfile()等,这些函数在处理上传、下载时经常会用到,调用时可能会出现下面的错误:Warning:move_uploaded_file()[function.move-uploaded-file]:failedtoopenstream:Invalidargumentin…Warning:move_uploaded_file()[function.move-uploaded-file]:Unabletomove”to”in…Warning:filesize()[function.filesize]:statfailedfor…in7、…Warning:readfile()[function.readfile]:failedtoopenstream:Invalidargumentin..在Linux环境下用gb2312编码虽然不会出现这些错误,但保存后的文件名出现乱码导致无法读取文件,这时可先将参数转换成操作系统识别的编码,编码转换可用mb_convert_encoding(字符串,新编码,原编码)或iconv(原编码,新编码,字符串),这样处理后保存的文件名就不会出现乱码,也可以正常读取文件,实现中文名称文件
4、>,所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用session就会出问题,可用editplus来保存,在editplus中,工具->参数选择->文件->UTF-8签名,选择总是删除,再保存就可以去掉BOM信息了。二.PHP与Mysql的数据交互PHP与数据库的编码应一致1.修改mysql配置文件my.ini或my.cnf,mysql最好用utf8编码[mysql]default-character-set=utf8[mysqld]default-character-set=utf8default-storage-eng
5、ine=MyISAM在[mysqld]下加入:default-collation=utf8_bininit_connect=’SETNAMESutf8′2.在需要做数据库操作的php程序前加mysql_query(”setnames‘编码’”);,编码和php编码一致,如果php编码是gb2312那mysql编码就是gb2312,如果是utf-8那mysql编码就是utf8,这样插入或检索数据时就不会出现乱码了。三.PHP与操作系统相关Windows和Linux的编码是不一样的,在Windows环境下,调用PHP的函数时参数如果是utf-8编码会出现错误,比如move_uploa
6、ded_file()、filesize()、readfile()等,这些函数在处理上传、下载时经常会用到,调用时可能会出现下面的错误:Warning:move_uploaded_file()[function.move-uploaded-file]:failedtoopenstream:Invalidargumentin…Warning:move_uploaded_file()[function.move-uploaded-file]:Unabletomove”to”in…Warning:filesize()[function.filesize]:statfailedfor…in
7、…Warning:readfile()[function.readfile]:failedtoopenstream:Invalidargumentin..在Linux环境下用gb2312编码虽然不会出现这些错误,但保存后的文件名出现乱码导致无法读取文件,这时可先将参数转换成操作系统识别的编码,编码转换可用mb_convert_encoding(字符串,新编码,原编码)或iconv(原编码,新编码,字符串),这样处理后保存的文件名就不会出现乱码,也可以正常读取文件,实现中文名称文件
此文档下载收益归作者所有