php乱码 header,php header乱码问题的相干解决办法汇总_后端开发

php header乱码的处理办法:1、在PHP页面中到场语句“header("Content-type: text/html; charset=utf-8");”;2、运用META标签设置页面编码;3、将PHP页面编码举行一致 。

d51366ebd8e90ab70d295a9c8c9578cf.png

php header处理乱码问题及其他乱码问题

引荐:《PHP教程》

php的header来定义一个php页面为utf编码或GBK编码

php页面为utf编码

header("Content-type: text/html; charset=utf-8");

php页面为gbk编码

header("Content-type: text/html; charset=gb2312");

php页面为big5编码

header("Content-type: text/html; charset=big5");

一般状况以上代码放在php页面的首页

用header或meta完成PHP页面编码的区分

一、页面编码

1. 运用 标签设置页面编码

这个标签的作用是声明客户端的阅读器用什么字符集编码显现该页面,xxx可认为GB2312,GBK,UTF-8(和MySQL差别,MySQL是 UTF8)等等。因而,大部分页面能够采纳这类体式格局来通知阅读器显现这个页面的时刻采纳什么编码,如许才不会形成编码毛病而发生乱码。然则有的时刻我们会 发明有了这句照样不行,不论xxx是哪种,阅读器采纳的一直都是一种编码,这个状况我背面会谈到。

请注意,是属于html信息的,仅仅是一个声明,它起作用表明服务器已把HTML信息传到了阅读器。

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

这个函数header()的作用是把括号内里的信息发到http标头。

假如括号内里的内容为文中所说那样,那作用和标签基础雷同,人人对比第一个看发明字符都差不多的。然则差别的是假如有这段 函数,阅读器就会永久采纳你所请求的xxx编码,相对不会不听话,因而这个函数是很有效的。为何会如许呢?那就得说说HTTPS标头和HTML信息的差 别了:

https标头是服务器以HTTP协定传送HTML信息到阅读器前所送出的字串。

由于meta标签是属于html信息的,所以header()发送的内容先抵达阅读器,浅显点就是header()的优先级高于meta(不知道可 不能够如许讲)。到场一个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为编码称号。这行代码的意义:设置悉数服务器内的网页文件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

假如你是web程序员,给你的每一个页面都加个header("content-type:text/html; charset=xxx"),保证它在任何服务器都能准确显现,可移植性强。

至于那句AddDefaultCharset xxx,要不要解释就仁者见仁了。横竖我是解释掉了,不过我写页子也要写header(),便于放到服务器上能一般显现。

二、数据库编码

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语句,它示意列值运用了什么字符集。)

PHP页面编码一致

MySQL数据库编码、html页面编码、PHP或html文件自身编码要悉数一致。

1、MySQL数据库编码:竖立数据库时指定编码(如gbk_chinese_ci),竖立数据表、竖立字段、插进去数据时不要指定编码,会自动继续数据库的编码。

数据库衔接时,也有编码,能够在衔接完数据库后,实行

mysql_query('SET NAMES gbk');//将gbk换成你的编码,如utf8。

2、html页面的编码,指的是这一行的设置:

3、PHP或html文件自身的编码:用editplus翻开php文件或html文件,另存时,挑选的编码,假如数据库和页面编码是gbk,则这儿的编码挑选ansi;假如数据库和页面编码是utf-8,则这儿也挑选utf-8。

4、别的要注意的是,Javascript或Flash中通报的数据是utf-8编码,假如数据库和页面编码是gbk,要举行转码,然后写入数据库。

iconv('utf-8', 'gbk', $content);

5、在PHP程序中,能够加上一行,来指定PHP源程序的编码:

header('Content-type: text/html; charset=gbk');

以上就是php header乱码问题的相干处理办法汇总的细致内容,更多请关注ki4网别的相干文章!

收藏 | 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值