php中文乱码终极解决方案

php PHP · ez · 于 3年前 发布 · 6245 次阅读

乱码是我们在开发可能经常遇见,也是最让人头疼的一个问题了,乱码总比白屏好对吧。

前言

我们先来谈谈为什么会出现中文乱码?

PHP的程序中的中文在输出的时候会出现乱码的问题,一般来说,乱码的出现有以下几种原因,

  1. 由于编码(charset) 设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,
  2. 文件被以错误的编码打开,然后保存,比如一个文本文件原先是GB2312编码的,却以UTF-8编码打开再保存,就会出现乱码的问题。
  3. 文件保存的时候采用了带有BOM的方式,引起的乱码。
  4. 数据库查询引起的乱码
  5. php文件结束符合后面多余的空行引起的乱码

本篇文章,就带大家了解一下,怎么解决php中乱码的问题。

浏览器中的乱码

先看几个例子,主要看感觉啊,乱码就那么几种感觉。

用GB232的设置看utf8编码的文字

濡傛灉浣犵殑PHP椤甸潰鍑虹幇浜嗕贡鐮侊紝鍙渶瑕佸湪椤甸潰鐨勫紑濮嬪鍔犲叆涓嬮潰浠g爜灏卞彲浠ヤ簡銆�

用UTF8的设置查看GB2312的文件

������PHPҳ����������룬ֻ��Ҫ��ҳ��Ŀ�ʼ�������������Ϳ����ˡ�

解决HTML中中文乱码问题方法

如果你的HTML文件文件出现了乱码问题,那么你可以在head标签里面加入UTF8编码(国际化编码):UTF-8是没有国家的编码,也就是独立于任何一种语言,任何语言都可以使用的。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

HTML和PHP混合的页面解决方案

如何是HTML和PHP混编,除了按照第一个方法所说的操作之外,还需要在PHP文件的最上面加入这句代码:

<?php
header("content-type:text/html;charset=utf-8");  //设置编码
?>

PHP+Mysql中文乱码问题

数据查询/修改/增加之前加入数据库编码。而且,值得注意的是,这里的UTF8和之前的不一样,中间是没有横线的。

<?php
 mysql_query('SET NAMES UTF8');
 //接下来的就是查出数据或者修改,增加
?>

如果不设置一般会显示:

????????????????,?????????????

php 文件结束符号之后有空格

[跨越左å³åˆ†æ­§]崔之元:é‡åº†ç»éªŒï¼šå›½èµ„增值与è—富于民并进,地票交易促城乡统筹

一般写程序都会把功能分布到各个文件中,最后在inclue或require方式结合到一起。 如果被包涵文件,如图所示

这是在vim编辑器中的样子,注意?>的下一行是一个空行,非空行的地方应该是~。 就这么一个小地方就会引起乱码。

解决办法:

  1. 删除掉空行
  2. 遵循psr规范,在纯php的内容的文件中,就不用写结束符号?>

本文由 ez 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册