PHP页面为什么出现HTML乱码-PHP问题

资源魔 37 0

PHP页面为何呈现HTML乱码

一、PHP网页编码的谬误;

假如欲应用gb2312编码,那末php要输入头:header(“Content-Type: text/html; charset=gb2312"),动态页面增加,一切文件的编码格局为ANSI,可用记事本关上,另存为抉择编码为ANSI,笼罩源文件。

假如欲应用utf-8编码,那末php要输入头 :header(“Content-Type: text/html; charset=utf-8"),动态页面增加,一切文件的编码格局为utf-8。保留为utf-8可能会有点费事,普通utf-8文件扫尾会有BOM,假如应用 session就会出成绩,可用editplus来保留,正在editplus中,对象->参数抉择->文件->UTF-8署名,抉择老是删除了,再保留就能够去掉BOM信息了。

php自身没有是Unicode的,一切substr之类的函数患上改为mb_substr(需求装mbstring扩大);或许用iconv转码。

二、MySQL编码与PHP编码纷歧致;

处理办法:

修正mysql设置装备摆设文件my.ini或my.cnf,mysql最佳用utf8编码 [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 default-storage-engine=MyISAM 正在[mysqld]下退出: default-collation=utf8_bin init_connect='SET NAMES utf8'

正在需求做数据库操作的php顺序前加mysql_query("set names '编码'");,编码以及php编码分歧,假如php编码是gb2312那mysql编码就是gb2312,假如是utf-8那mysql编码就是 utf8,这样拔出或检索数据时就没有会呈现乱码了

三、 PHP与操作零碎的编码纷歧致。

Windows以及Linux的编码是纷歧样的,正在Windows环境下,挪用PHP的函数时参数假如是utf-8编码会呈现谬误,比方 move_uploaded_file()、filesize()、readfile()等,这些函数正在解决上传、下载时常常会用到,挪用时可能会呈现上面的谬误:

Warning: move_uploaded_file()[function.move-uploaded-file]:failed to open stream: Invalid argument in ...
Warning: move_uploaded_file()[function.move-uploaded-file]:Unable to move '' to '' in ...
Warning: filesize() [function.filesize]: stat failed for ... in ...
Warning: readfile() [function.readfile]: failed to open stream: Invalid argument in ..

正在Linux环境下用gb2312编码尽管没有会呈现这些谬误,但保留后的文件名呈现乱码招致无奈读取文件,这时候可先将参数转换成操作零碎辨认的编码,编码转换可用mb_convert_encoding(字符串,新编码,原编码)或iconv(原编码,新编码,字符串),这样解决后保留的文件名就没有会呈现乱码,也能够失常读取文件,完成中文称号文件的上传、下载。

其实另有更好的处理办法,彻底与零碎脱离,也就不必思考零碎是何编码。能够天生一个只有字母以及数字的序列作为文件名,而将原来带有中文的名字保留正在数据库中,这样挪用move_uploaded_file()就没有会呈现成绩,下载的时分只要将文件名改成原来带有中文的名字。完成下载的代码以下

header("Pragma: public");
header("Expires: 0");
header("Cache-Component: must-revalidate, post-check=0, pre-check=0");
header("Content-type: $file_type");
header("Content-Length: $file_size");
       header("Content-Disposition: attachment; filename=\"$file_name\"");
header("Content-Transfer-Encoding: binary");
readfile($file_path);

$file_type是文件的类型,$file_name是原来的名字,$file_path是保留正在效劳上文件的地点。
保举教程:《PHP教程》

以上就是PHP页面为何呈现HTML乱码的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 html php故障解决 php使用问题

抱歉,评论功能暂时关闭!