




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网页中文乱码既然后面charset设置为gb2312,那么你打开这个网页,然后另存,保存的时候记得把编码改成gb2312,不然的话charset就会误导浏览器,这样就会乱码了。2php编网页出现乱码,我把编码改成utf-8 前台显示正常了, 但是有东西输入到数据库再提取出来还是不正常3.apache+php+mysql为何会出现乱码我们在做PHP项目的时候,经常会遇到中文乱码的问题,有时候编码问题还导致MYSQL的报错。中文乱码总共有三个原因1:APACHE服务器设置导致乱码2:PHP,或者HTML页面编码导致中文乱码3:MYSQL数据库的表以及字段编码导致中文乱码我们分别从这三个部分来探究PHP程序设计中的编码问题在这之前我们要了解一些基本理论:1、文件编码每个文件在保存的时候都可以选择以什么编码保存,例如用WINDOWS的记事本创建一个文件可以选择ANSI 以及UTF8等等编码。我们选择了什么编码该文件就以这种编码方式保存在硬盘上。 读取该文件数据的时候也会指定一种编码来打开,如果指定的编码与文件保存的时候的编码不一样的话就会出现乱码2、HTML的编码在网页头部一般有这样一个区域这个的意思是让客户端知道,接下来输出的是html代码(text/html),并且以下输出的内容都将是utf-8编码的。如果我们用记事本创建一个HTML文件 该文件包含但是在保存的时候却以ANSI编码格式保存,那么我们用浏览器打开这个文件时,浏览器看见META 行的UTF8编码设置后 就将文件以UTF8格式输出,而文件本来是ANSI编码,这样便出现了中文乱码。一:APACHE服务器编码在APACHE配置文件中有一行是编码的设置 默认的是AddDefaultCharset ISO-8859-1,大部分人认为应该将这句改为 AddDefaultCharset UTF-8 。而蜗牛认为这是误人子弟。 这项配置是告诉APACHE服务器选用什么样的编码来输出WEB页面(这样做会忽略,HTML页面中的页面编码的设置 EG:),如果我们建立一个GB2312的页面就会出现中文乱码 。所以最好的方法是将AddDefaultCharset ISO-8859-1这一项注释掉 #AddDefaultCharset二:PHP编码问题php最终生成的是文本文件,而他要从数据库中取出文本数据,还要把文本数据写到数据库中。由于MYSQL并不知道PHP发送给他的是什么编码的数据,所以需要客户端PHP告诉他存取的是什么编码的数据。然后MYSQL会自动将PHP传送来的数据转换成目标编码格式的数据。比如: PHP要将 文本数据DATE 写入到数据库字段field中,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通过character_set_client告诉MYSQL,php存入数据库的是什么编码方式PHP通过character_set_results告诉MYSQL,php需要取什么样编码的数据PHP通过character_set_connection告诉MYSQL,PHP查询中的文本,使用什么编码就算上面的大家都注意了,还有个问题也可能导致乱码。那就是PHP文件(生成的HTML页面)本身的编码问题如果MYSQL传来的数据 编码与PHP本身编码不一致也会导致乱码三:MYSQL编码问题Mysql目前支持多字符集,并且,支持在不同的字符集之间转换(便于移植和支持多语言)。Mysql可以设置服务器级字符集、数据库级字符集、数据表级字符集、表列的字符集,实际上,最终使用字符集的地方是存储字符的列,比如,你设置 table1中col1列是字符类型,col1才用到了字符集,如果table1表的col2列是int类型,col2不使用字符集的概念。服务器级字符集、数据库级字符集、数据表级字符集都是为列的字符集做默认选项的。Mysql一定有一个字符集,可以通过启动时加参数指定 ,也可以编译时指定,也可以在配置文件里指定。Mysql服务器字符集,只是做为数据库级的默认值。创建数据库时,你可以指定字符集,如果没指定,就使用服务器的字符集。同理,创建表时,你可以指定表级的字符集,如果没指定,使用数据库的字符集做为表的字符集。创建列时,你可以指定某列的字符集,如果没指定,就使用表的字符集。通常情况下,您只需设置服务器级的字符集,其它的数据库级,表级,以及列级的字符集,都继承自服务器级字符集。由于UTF8是最广的字符集,所以,一般情况下,我们设置Mysql服务器级的字符集为UTF8!总结:要保证不乱码,需将三个编码统一:一:是网页自身的编码二:是HTML里指定的编码三:是PHP告诉Mysql的编码(包括character_set_client和character_set_results)。第一和第二个编码,如果使用DW之类的编辑器写的网页,通常是一致的,但用记事本写的网页,有可能不一致。第三个编码,需要手工通知Mysql。这步可以通过在PHP里使用mysql_query(“set names characterX”)来实现。4. Apache2.2 配置 默认编码 解决中文乱码在Apache的配置文件httpd.conf中 1)在配置文件中找包含“AddLanguage”或“AddCharset”的行,在这些行最前面增加一行: AddDefaultCharset GB2312 2)养成良好的习惯,在每个网页的里加入这行: 一般的中文版网页编辑工具(例如FrontPage、Dreamweaver等)都会自动加上这行。 PS:刚刚安装好的Apache2.2中是没有“AddLanguage”或“AddCharset”的,直接在httpd.conf文件末尾添加就ok了5. apache+mysql+php 乱码问题apache 2.0.45mysql 4.1.6php 5.0.4操作系统为FC4.web出现乱码问题.且php提交中文apache不受理.或者mysql不接收.utf-8下的中文全乱码.gb2312显示正常.php无法读取mysql里面的中文.web编码全是utf-8的.在网上搜了很多.众说纷纭.问朋友也没人遇到过.开始漫长的摸索之旅.其实很简单.只是我忽略了一个地方.改三个配置文件即可.其实大家都知道是哪三个了.php.ini f httpd.conf 就好了.把编码有关的都设置成 utf-8即可.但是还不行.因为我安装了. php-mbstring .所以在php.ini里面一定要开启 mbstring 且编码也要设置成utf-8.一. httpd.conf修改成:AddDefaultCharset UTF-8 即可.其实这个地方不是主要的.AddDefaultCharset off 也行.改完重启apache. 你可以用 Firefox 看http头.就知道 apache的 默认编码是什么了.嘿嘿.二. f在mysqld加上下面一行就可以了.就这样一行.default-character-set=utf8保存重启mysql.如果装了phpmyadmin的话.可以root进去查看Language 选择Chinese simplified 连接校对 utf8_general_ci点 MySQL 的运行信息-变量.你可以看到:character set client utf8character set connection utf8character set database utf8character set results utf8character set server utf8character set system utf8collation connection utf8_general_cicollation database utf8_general_cicollation server utf8_general_ci三.php.ini这个关键在这里.上面都是准备工作.有些根本没必要的.这里没有设置好.php根本不解析中文的.;default_charset = iso-8859-1 改成 default_charset = UTF-8.mbstring; language for internal character representation.; mbstring.language = zh-gb2312mbstring.language = utf-8; internal/script encoding.; Some encoding cannot work as internal encoding.; (e.g. SJIS, BIG5, ISO-2022-*); ernal_encoding = ernal_encoding = utf-8; http input encoding.mbstring.http_input = auto; http output encoding. mb_output_handler must be; registered as output buffer to function; mbstring.http_output = SJISmbstring.http_output = utf-8; enable automatic encoding translation accoding to; ernal_encoding setting. Input chars are; converted to internal encoding by setting this to On.; Note: Do not use automatic encoding translation for; portable libs/applications.mbstring.encoding_translation = On; automatic encoding detection order.; auto meansmbstring.detect_order = auto; substitute_character used when character cannot be converted; one from another; mbstring.substitute_character = gb2312;mbstring.substitute_character = utf-8;第2/3页; overload(replace) single byte functions by mbstring functions. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年 贵州烟草专卖局试题附答案
- 中国抛光铝隔条项目投资可行性研究报告
- 2025年 防城港市市级机关遴选考试笔试试题附答案
- 2025年中国柔性显示行业市场发展监测及投资潜力预测报告
- 2022-2027年中国定制酒行业市场全景评估及发展战略规划报告
- 项目课程的概念原理与设计
- 中国厦门市汽车服务市场调查研究及行业投资潜力预测报告
- 中国马靴型反光鞋套行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 昆明数控刀柄项目投资分析报告模板范本
- 2020-2025年中国公共厕所行业市场前景预测及投资战略研究报告
- 2024年湖南融通资源循环产业有限公司技能岗位招聘真题
- 2025年安徽省农业职业技能大赛(水生物病害防治员)备赛试题库(含答案)
- 静电放电(ESD)及其防护措施培训课件
- 城市更新中历史文化街区非物质文化遗产保护与开发报告
- 家装修泥水工合同协议
- 2023承压设备产品焊接试件的力学性能检验
- ESG趋势下企业财务管理新挑战
- 2024年公安机关理论考试题库500道(基础题)
- 2024年11月-矿山隐蔽致灾因素普查
- DBJ51T 163-2021 成都轨道交通设计防火标准
- 加热炉安全操作规程培训课件
评论
0/150
提交评论