Products
GG网络技术分享 2025-11-15 21:19 3
哇哈哈,今天我要给巨大家讲讲PHP里的一个巨大暗地,就是怎么处理gb2312乱码啦!你有没有遇到过打开网页,kan到乱七八糟的字符,心里直发毛呢?别担心,我来教你,保证你以后上网再也不怕乱码啦!
先说说我们要晓得PHP网页的编码是啥。这玩意儿编码就像网页的身份证,告诉浏览器这玩意儿网页是用啥语言写的。常见的编码有GB2312和UTF-8。GB2312是中国的老编码,而UTF-8是全球通用的编码。

Ru果你的网页是GB2312编码的, 那么在PHP里你需要这样写:
header;
这样写就告诉浏览器,这玩意儿网页是用GB2312编码的。Ru果你用UTF-8编码, 就写成这样:
header;
文件编码就是网页文件本身是用啥编码保存的。这玩意儿也hen关键,Ru果文件编码和网页编码不一致,就会出现乱码。所以保存网页文件的时候,要选择正确的编码。比如GB2312编码的文件,保存时就要选择GB2312编码。
Ru果你用记事本打开网页文件,然后保存,一定要想起来选择正确的编码哦!不然就会变成乱码啦!
数据库里也存着文字,所以数据库的编码也要和网页编码一样。比如Ru果你用GB2312编码的网页,数据库也要用GB2312编码。
在PHP里连接数据库的时候,Neng设置编码,这样就不会出现乱码了。比如 这样写:
mysql_query;
有时候,操作系统也会关系到到编码。比如Windows系统默认的编码是GBK,而Linux系统默认的编码是UTF-8。
Ru果你的PHP程序是在Windows系统上运行的, 但是网页编码是UTF-8,那么就会出现乱码。这时候,你Neng设置PHP的编码,让它和Windows系统默认的GBK编码一致。
优良了今天我就给巨大家分享到这里。记住处理PHPgb2312乱码,就是要保证网页编码、文件编码和数据库编码一致。这样一来乱码问题就迎刃而解啦!以后上网,再也不怕乱码啦!
Warning: readfile : failed to open stream: Invalid argument in ...
注:说实在的MYSQL的数据输入输出比上面讲的geng麻烦一些, MYSQL配置文件my.ini中定义了2个默认编码,分别是里的default-character-set和里的default-character-set来分别设定默认时候客户端连接和数据库内部所采用的编码。我们上面指定的编码其实是MYSQL客户端连接服务器时候的命令行参数character_set_client, 来告诉MYSQL服务器收下到的客户端数据是啥编码的,而不是采用默认编码。
b.Ru果欲用utf-8编码, 那么php要输出头:header,静态页面添加meta http-equiv="Content-Type" content="text/html; charset=utf-8",全部文件的编码格式为utf-8。保存为utf-8兴许会有点麻烦, 一般utf-8文件开头会有BOM,Ru果用session就会出问题,可用editplus来保存,在editplus中,工具-参数选择-文件-UTF-8签名,选择总是删除,再保存就Neng去掉BOM信息了。
html
在下加入:
header;
Windows和Linux的编码是不一样的, 在Windows周围下调用PHP的函数时参数Ru果是utf-8编码会出现错误,比如move_uploaded_file、filesize、readfile等,这些个函数在处理上传、下载时三天两头会用到,调用时兴许会出现下面的错误:
php文件本身的编码与网页的编码应匹配,Ru果欲用gb2312编码,那么php要输出头
Zui优良Zui迅速的解决办法就是使页面申明的编码与数据库内部编码一致,Ru果页面申请的编码与数据库内部的编码不一致时那就设定连接编码。Mysql_query("set
init_connect="SET 不结盟ES utf8";
不管用哪个编码两个统一就行, 还有文件编辑本身自带编码,
meta
charset=gb2312",全部文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。
静态页面添加
Ru果欲用uft-8编码,那么php要输出头
default-collation=utf8_bin
default-character-set=utf8
default-storage-engine=MyISAM
charset=utf-8",
全部文件的编码格式为utf-8。保存为utf-8兴许会有点麻烦, 一般utf-8开头会有BOM,Ru果用
本文讲述了php中json_encode处理gbk与gb2312中文乱码问题的解决方法,具体方法如下: 1.json_encode中文在gbk/gb2312中对中文......
.修改mysql配置文件my.ini或my.cnf,mysqlZui优良用utf8编码
你文件的编码是UTF-8吧,但是你声明的是gb2312,修改成一致的就没问题了。
三.PHP与操作系统相关
页面申明编码与文件本身编码不一致,这种情况困难得发生,基本上原因是Ru果编码不一致美工Zuo页面时候在浏览器kan到的就是乱码了。geng许多时候是发布以后修改一些细小BUG,以错误编码打开页面然后保存弄得的。或者是用有些FTP柔软件直接在线修改文件,比如CuteFTP,由于柔软件编码配置错误而弄得转换错了编码。
readfile;
Ru果数据库编码是GB2312, 请修改网页代码的编码也为GB2312,且网页header设置为gb2312,或者三者全部设置为UTF-
http-equiv="Content-type" content="text/html;
Session就会出现问题,可用editplus柔软件来保存。
数据库采用UTF8编码,而页面申明编码是GB2312,这是Zui常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是PHP页面乱码, 需要在查询前先用:
页面申明编码:在HTML代码HEAD里面Neng用meta http-equiv="Content-Type" content="text/html; charset=XXX" /来告诉浏览器网页采用了啥编码,目前中文网站开发中XXX基本上用的是GB2312和UTF-8两种编码。
***").
PHP中文乱码一般是字符集问题,编码基本上有下面几个问题。
mysql_query; 来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致。Ru果页面是UTF-8编码的话, Neng用:
meta charset="UTF-8"
一.先说说是PHP网页的编码
代码如下:
header("Content-type:text/html;
Warning: filesize : stat failed for ...
php
在Linux周围下用gb2312编码虽然不会出现这些个错误,但保存后的文件名出现乱码弄得无法读取文件,这时可先将参数转换成操作系统识别的编码,编码转换可用mb_convert_encoding或iconv,这样处理后保存的文件名就不会出现乱码,也Neng正常读取文件,实现中文名称文件的上传、下载。
mysql_query; 注意是UTF8而不是一般用的UTF-。虚假如页面申明的编码与数据库内部编码一致Neng不设定连接编码。
names
.php文件本身的编码与网页的编码应匹配
.在需要Zuo数据库操作的php程序前加mysql_query;, 编码和php编码一致,Ru果php编码是gb2312那mysql编码就是gb2312,Ru果是utf-8那mysql编码就是utf8,这样插入或检索数据时就不会出现乱码了
其实还有geng优良的解决方法,彻底与系统脱离,也就不用考虑系统是何编码。Neng生成一个只有字母和数字的序列作为文件名, 而将原来带有中文的名字保存在数据库中,这样调用move_uploaded_file就不会出现问题,下载的时候只需将文件名改为原来带有中文的名字。实现下载的代码如下
数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如MySQL内部默认是latin1编码,也就是说Mysql是以latin1编码来存储数据,以其他编码传输给Mysql的数据会被转换成latin1编码。
.php本身不是Unicode的,全部substr之类的函数得改成mb_substr;或者用iconv转码。
Warning: move_uploaded_file:Unable to move ...
晓得了WEB开发中哪些地方涉及到了编码, 也就晓得了PHP页面乱码产生的原因:上述3项编码设置不一致,由于各种编码绝巨大有些是兼容ASCII的,所以英文符号不会出现,中文就倒霉了。下面是一些常见的错误情况与解决:
Demand feedback