欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

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

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.'+'.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,'UTF-8','GBK'));  
        }  
    }
  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.cn独孤九贱(4)-php视频教程》

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

以上就是php中文乱码问题解决方案汇总的详细内容,更多请关注其它相关文章!