header或meta来实现PHP页面编码的辨别[网络技术]
本文“header或meta来实现PHP页面编码的辨别[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
根源:豆豆网
1、页面编码
1. 利用 <META http-equiv="content-type" content="text/html; charset=xxx"> 标签设置页面编码
这个标签的作用是声明客户端的浏览器用什么字符集编码显示该页面,xxx可认为GB2312,GBK,UTF-8(和MySQL差别,MySQL是 UTF8)等等.因此,大部份页面可以采取这种方法来奉告浏览器显示这个页面的时刻采取什么编码,这样才不会造成编码错误而产生乱码.但是有的时刻我们会发现有了这句还是不行,不管xxx是哪一种,浏览器采取的始终都是一种编码,这个情形我背面闲谈到.
请注意,<meta>是属于html信息的,仅仅是一个声明,它起作用表明服务器已经把HTML信息传到了浏览器.
2. header("content-type:text/html; charset=xxx");
这个函数header()的作用是把括号里面的信息发到http标头.
假如括号里面的内容为文中所说那样,那作用和<META>标签基本相同,大家对比第一个看发现字符都差不多的.但是差别的是假若有这段函数,浏览器就会永久采取你所要求的xxx编码,绝对不会不听话,因此这个函数是很有效的.为什么会这样呢?那就得说说HTTPS标头和HTML信息的差别了:
https标头是服务器以HTTP协议传送HTML信息到浏览器前所送出的字串.
因为meta标签是属于html信息的,所以header()发送的内容先到达浏览器,通俗点就是header()的优先级高于meta(不知道可不可以这样讲).加入一个php页面既有header("content-type:text/html; charset=xxx"),又有<META http-equiv="content-type" content="text/html; charset=xxx">,浏览器就只认前者http标头而不认meta了.当然这个函数只能在php页面内利用.
一样也留有一个问题,为什么前者就绝对起作用,此后者有时刻就不行呢?这就是接下来要谈的Apache的缘由了.
3. AddDefaultCharset
Apache 根目录的 conf 文件夹里,有整个Apache的配置文档httpd.conf.
用文本编辑器翻开httpd.conf,第708行(差别版本大概差别)有AddDefaultCharset xxx,xxx为编码名称.这行代码的意思:设置整个服务器内的网页文件https标头里的字符集为你默许的xxx字符集.有这行,就相当于给每个文件都加了一行header("content-type:text/html; charset=xxx").这下就懂得为什么明显meta设置了是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
<META http-equiv="content-type" content="text/html; charset=xxx">
假如你是web程序员,给你的每个页面都加个header("content-type:text/html; charset=xxx"),保证它在任何服务器都能精确显示,可移植性强.
至于那句AddDefaultCharset xxx,要不要注释就仁者见仁了.反正我是注释掉了,不过我写页子也要写header(),便于放到服务器上能正常显示.
2、数据库编码
PHP 程序在查询数据库之前,首先履行 mysql_query(“SET NAMES xxxx”);此中 xxxx 是你网页的编码(charset=xxxx),假如网页中 charset=utf8,则 xxxx=utf8,假如网页中 charset=gb2312,则xxxx=gb2312,几近全部WEB程序,都有一段衔接数据库的大众代码,放在一个文件里,在这文件里,加入 mysql_query(“set names”)便可以了.
SET NAMES 显示客户端发送的 SQL 语句中利用什么字符集.因此,SET NAMES 'utf-8'语句奉告服务器“将来从这个客户端传来的信息采取字符集utf-8”.它还为服务器发送回客户端的后果指定了字符集.(比方,假如你利用一个SELECT语句,它表示列值利用了什么字符集.)
以上是“header或meta来实现PHP页面编码的辨别[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |