既然后面charset设置为gb2312,那么你打开这个网页,然后另存,保存的时候记得把编码改成g"> 既然后面charset设置为gb2312,那么你打开这个网页,然后另存,保存的时候记得把编码改成g" />
欢迎来到天天文库
浏览记录
ID:35286704
大小:22.21 KB
页数:7页
时间:2019-03-23
《网页中文乱码完美解决方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、网页中文乱码既然后面charset设置为gb2312,那么你打开这个网页,然后另存,保存的时候记得把编码改成gb2312,不然的话charset就会误导浏览器,这样就会乱码了。2.php编网页出现乱码,我把编码改成utf-8前台显示正常了,但是有东西输入到数据库再提取出来还是不正常3.apache+php+mysql 为何会出现乱码我们在做PHP项目的时候,经常会遇到中文乱码的问题,有时候编码问题还导致MYSQL的报错。中文乱码总共有三个原因1:AP
2、ACHE服务器设置导致乱码2:PHP,或者HTML页面编码导致中文乱码3:MYSQL数据库的表以及字段编码导致中文乱码我们分别从这三个部分来探究PHP程序设计中的编码问题在这之前我们要了解一些基本理论:1、文件编码每个文件在保存的时候都可以选择以什么编码保存,例如用WINDOWS的记事本创建一个文件可以选择ANSI以及UTF8等等编码。我们选择了什么编码该文件就以这种编码方式保存在硬盘上。读取该文件数据的时候也会指定一种编码来打开,如果指定的编码与文件保存的时候的编码不一样的话就会出现乱码2、HTML的编码在网页头部一般有这样一个区域这个的意思是让客户端知道,接下来输出的是ht
3、ml代码(text/html),并且以下输出的内容都将是utf-8编码的。如果我们用记事本创建一个HTML文件该文件包含但是在保存的时候却以ANSI编码格式保存,那么我们用浏览器打开这个文件时,浏览器看见META行的UTF8编码设置后就将文件以UTF8格式输出,而文件本来是ANSI编码,这样便出现了中文乱码。一:APACHE服务器编码在APACHE配置文件中有一行是编码的设置默认的是AddDefaultCharsetISO-8859-1,大部分人认为应该将这句改为AddDefaultCharsetUTF-8。而蜗牛认为这是误人子弟。这项配置是告诉APACHE服务器选用什么样的编
4、码来输出WEB页面(这样做会忽略,HTML页面中的页面编码的设置EG:),如果我们建立一个GB2312的页面就会出现中文乱码。所以最好的方法是将AddDefaultCharsetISO-8859-1这一项注释掉#AddDefaultCharset二:PHP编码问题php最终生成的是文本文件,而他要从数据库中取出文本数据,还要把文本数据写到数据库中。由于MYSQL并不知道PHP发送给他的是什么编码的数据,所以需要客户端PHP告诉他存取的是什么编码的数据。然后MYSQL会自动将PHP传送来的数据转换成目标编码格式的数据。比如:PHP要将文本数据DATE写入到数据库字段field中,
5、PHP发送的是UTF-8编码的数据,而DATE是以GB2312方式存储的。这时候PHP通过设置告诉MYSQL我发的是UTF-8格式,MYSQL接到数据后说:”我知道了,来谁专门负责将UTF-8转换成GB2312“于是MYSQL中的一个专门负责此事的小兵跑来把数据拿走经过加工放到指定位置,如果PHP误将UTF-8编码的数据当作GB2312编码送给MYSQL的时候,MYSQL会叫上次那个负责UTF-8—-GB2312的小兵来负责,而小兵不管三七二十一按同样方法转换存起来,这就出现了错误,乱码就产生了。取数据的时候也一样,PHP要告诉MYSQL要取出什么样编码的数据。PHP通过cha
6、racter_set_client告诉MYSQL,php存入数据库的是什么编码方式PHP通过character_set_results告诉MYSQL,php需要取什么样编码的数据PHP通过character_set_connection告诉MYSQL,PHP查询中的文本,使用什么编码就算上面的大家都注意了,还有个问题也可能导致乱码。那就是PHP文件(生成的HTML页面)本身的编码问题如果MYSQL传来的数据编码与PHP本身编码不一致也会导致乱码三:MYSQL编码问题Mysql目前支持多字符集,并且,支持在不同的字符集之间转换(便于移植和支持多语言)。Mysql可以设置服务器级字
7、符集、数据库级字符集、数据表级字符集、表列的字符集,实际上,最终使用字符集的地方是存储字符的列,比如,你设置table1中col1列是字符类型,col1才用到了字符集,如果table1表的col2列是int类型,col2不使用字符集的概念。服务器级字符集、数据库级字符集、数据表级字符集都是为列的字符集做默认选项的。Mysql一定有一个字符集,可以通过启动时加参数指定,也可以编译时指定,也可以在配置文件里指定。Mysql服务器字符集,只是做为数据库级的默认值。创建数据库时,你可以指定字符集,如
此文档下载收益归作者所有