php 各种应用乱码问题的解决方法


Posted in PHP onMay 09, 2010

1) 使用 标签设置页面编码

这个标签的作用是声明客户端的浏览器用什么字符集编码显示该页面,xxx 可以为 GB2312、GBK、UTF-8(和 MySQL 不同,MySQL 是 UTF8)等等。因此,大部分页面可以采用这种方式来告诉浏览器显示这个页面的时候采用什么编码,这样才不会造成编码错误而产生乱码。但是有的时候我们会发现有了这句还是不行,不管 xxx 是哪一种,浏览器采用的始终都是一种编码,这个情况我后面会谈到。

请注意, 是属于 HTML 信息的,仅仅是一个声明,仅表明服务器已经把 HTML 信息传到了浏览器。

2) header("content-type:text/html; charset=xxx");

这个函数 header() 的作用是把括号里面的信息发到 http 标头。如果括号里面的内容为文中所说那样,那作用和 标签基本相同,大家对照第一个看发现字符都差不多的。但是不同的是如果有这段函数,浏览器就会永远采用你所要求的 xxx 编码,绝对不会不听话,因此这个函数是很有用的。为什么会这样呢?那就得说说 http 标头和 HTML信息的差别了:

http 标头是服务器以 http 协议传送 HTML 信息到浏览器前所送出的字串。而 标签是属于 HTML 信息的,所以 header() 发送的内容先到达浏览器,通俗点就是 header() 的优先级高于 (不知道可不可以这样讲)。假如一个 php 页面既有header("content-type:text/html;charset=xxx"),又有,浏览器就只认前者 http 标头而不认 meta 了。当然这个函数只能在 php 页面内使用。

同样也留有一个问题,为什么前者就绝对起作用,而后者有时候就不行呢?这就是接下来要谈的Apache 的原因了。

3) AddDefaultCharset

Apache 根目录的 conf 文件夹里,有整个 Apache 的配置文档 httpd.conf。

用文本编辑器打开 httpd.conf,第 708 行(不同版本可能不同)有 AddDefaultCharset xxx,xxx为编码名称。这行代码的意思:设置整个服务器内的网页文件 http 标头里的字符集为你默认的 xxx字符集。有这行,就相当于给每个文件都加了一行 header("content-type:text/html; charset=xxx")。这下就明白为什么明明 设置了是 utf-8,可浏览器始终采用 gb2312 的原因。

如果网页里有 header("content-type:text/html; charset=xxx"),就把默认的字符集改为你设置的字符集,所以这个函数永远有用。如果把 AddDefaultCharset xxx 前面加个"#",注释掉这句,而且页面里不含 header("content-type…"),那这个时候就轮到 meta 标签起作用了。

下面列出以上的优先顺序:

.. header("content-type:text/html; charset=xxx")

.. AddDefaultCharset xxx

..

如果你是 web 程序员,建议给你的每个页面都加个header("content-type:text/html;charset=xxx"),这样就可以保证它在任何服务器都能正确显示,可移植性也比较强。

4) php.ini 中的 default_charset 配置:

php.ini 中的 default_charset = "gb2312" 定义了 php 的默认语言字符集。一般推荐注释掉此行,让浏览器根据网页头中的 charset 来自动选择语言而非做一个强制性的规定,这样就可以在同台服务器上提供多种语言的网页服务。

PHP截取汉字乱码问题解决方法mb_substr函数的应用
mysql 中文乱码解决方法集锦

PHP 相关文章推荐
测试您的 PHP 水平的题目
May 30 PHP
php数组函数序列之array_keys() - 获取数组键名
Oct 30 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
解析Extjs与php数据交互(增删查改)
Jun 25 PHP
php中注册器模式类用法实例分析
Nov 03 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
Adnroid 微信内置浏览器清除缓存
Jul 11 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
PHP实现权限管理功能示例
Sep 22 PHP
php 输出双引号"与单引号'的方法
May 09 #PHP
php for 循环语句使用方法详细说明
May 09 #PHP
php 函数使用方法与函数定义方法
May 09 #PHP
php 获取select下拉列表框的值
May 08 #PHP
PHP foreach循环使用详解与实例代码
May 08 #PHP
php 在文件指定行插入数据的代码
May 08 #PHP
php将数据库导出成excel的方法
May 07 #PHP
You might like
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
Python切片索引用法示例
2018/05/15 Python
实例介绍Python中整型
2019/02/11 Python
python如何将两个txt文件内容合并
2019/10/18 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
python输出数学符号实例
2020/05/11 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
护士实习生自我鉴定范文
2013/12/10 职场文书
秋季运动会稿件
2014/01/30 职场文书
作文批改评语大全
2014/04/23 职场文书
小班上学期评语
2014/05/05 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
医德医风自我评价2015
2015/03/03 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
学校节水倡议书
2015/04/29 职场文书
2016新教师培训心得体会范文
2016/01/08 职场文书
选对餐饮营销策略,营业额才会上涨
2019/08/27 职场文书
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android