首页  >  文章  >  后端开发  >  php中文乱码问题解决方案汇总

php中文乱码问题解决方案汇总

伊谢尔伦
伊谢尔伦原创
2017-06-07 16:13:231917浏览

朋友们刚学习php的时候,常常会发现浏览器中输出的内容会出现一堆的乱码问题,尤其是输出中文的时候。为什么会出现有乱码的情况呢?一般来说,乱码的出现有2种原因,一种是由于编码(charset) 设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,第二种就是文件被以错误的编码打开,然后保存,比如一个文本文件原先是GB2312 编码的,却以UTF-8 编码打开再保存,就会出现乱码的问题。在下面的文章中,我们就来聊聊php中文乱码问题和解决方案。

php中文乱码问题

1. php如何解决中文乱码问题?

第一种:解决HTML中中文乱码问题方法

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

第二种、HTML和PHP混合的页面解决方案

第三种、纯PHP页面的中文乱码问题(数据是静态的)

第四种、PHP+Mysql中文乱码问题

这个除了按照第三种所说的操作之外,还要在你的数据查询/修改/增加之前加入数据库编码。而且,值得注意的是,这里的UTF8和之前的不一样,中间是没有横线的。

2. PHP使用strrev翻转中文乱码问题的解决方法

header("Content-Type: text/html; charset=utf-8");
$str = '处理使用strrev()函数时的乱码问题';
function cnstrrev($str)
{
  $len = strlen($str);
  for($i = 0; $i < $len; $i++)
  {
    $char = $str{0};
    if(ord($char) > 127) //ord()函数取得第一个字符的ASCII码,如果大于0xa0(127)的话则是中文字符
    {
      $i+=2;//utf-8编码的情况下,一个中文字符占三个字节
      if($i < $len)
      {
        $arr[] = substr($str, 0, 3);//utf-8编码的情况下,一个中文字符占三个字节
        $str = substr($str, 3);
      }
    }
    else
    {
      $arr[] = $char;
      $str = substr($str, 1);//否则为非中文,占一个字符
    }
  }
  return join(array_reverse($arr));//以相反的元素顺序返回数组:
}
echo $str.&#39;+&#39;.cnstrrev($str);

3. php中json_encode UTF-8中文乱码的解决方法

这种简单的做一个代码转换,urlcode之后再返回所需数组

public static function encodeOperations ($array)  
{  
    foreach ((array)$array as $key => $value) {  
        if (is_array($value)) {  
        encodeOperations($array[$key]);  
        } else {  
        $array[$key] = urlencode(mb_convert_encoding($value,&#39;UTF-8&#39;,&#39;GBK&#39;));  
        }  
    }
  return $array;  
}

4. php url地址栏传中文乱码解决方法集合

url编码
语法: string urlencode(string str);
返回值: 字符串
函数种类: 编码处理

url解码
还原 URL 编码字符串。
语法: string urldecode(string str);
返回值: 字符串
函数种类: 编码处理

5. php中json_encode处理gbk与gb2312中文乱码问题的解决方法

可见即使用UTF8编码的字符,使用json_encode也出现了中文乱码。解决办法是在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode,输出结果的时候再用函数urldecode()转回来。

6. PHP中Ajax中文乱码问题解决

因为XMLHttp在处理返回的responstText的时候把responstBody按UTF-8编码进行解码的,如果服务器端送出的数据流的确是UTF-8编码,那么中文字就会正确显示,但如果是GBK或是其他编码则会出现上述情况。

相关问答

1. 碰到一个中文乱码引起的神奇的问题

2. php 中文乱码

3. 网页中文乱码无法解决,见图

【相关推荐】

1. php中文网免费视频教程:《php.cn独孤九贱(4)-php视频教程》

2. php中文网相关文章:《php入门教程之一周学会PHP》

以上是php中文乱码问题解决方案汇总的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn