乱码解决方案

乱码解决办法

第一种 数据库中的数据乱码

问题重现

首先数据库连接工具使用的navicat
乱码解决方案_第1张图片
可以看到这里对数据库进行了utf8编码,即里面显示的数据编码是utf8

乱码解决方案_第2张图片
这里可以看到正常显示的文字编码格式就是utf8编码,乱码就不知道是什么最初未转码为utf8之前的编码格式了

测试乱码的编码格式

这里有一个测试乱码网站

http://www.mytju.com/classcode/tools/messyCodeRecover.asp

我们把乱码的字符串放上去检测
乱码解决方案_第3张图片
因为之前我们已经把所有的编码格式统一为utf8,所以现在测出来在windows-1252编码下是能够正常显示。

乱码处理

这里就采用哪个编码能够正常显示,就使用哪种编码格式
在查询数据库时候进行设置

mysql_query("SET NAMES 'UTF8'");

这样就固定了里面所有的字符编码为utf8,和navicat配置一致

public function codingConverter($sPendingCode)
    {
        $sOldStr = $sPendingCode;
        $sNewStr = mb_convert_encoding($sPendingCode, 'WINDOWS-1252', 'utf8');
        if (stripos($sNewStr, '?') === false) {

            return $sNewStr;
        } else {

            return $sOldStr;
        }
    }

首先将所有的编码格式转化为windows-1252,如果之前的编码是utf8能够正常显示,那么转化为Windows1252则会损坏字符,变成????,这里就进行检测。

结论

针对于多个字符相互转换,且如果有的字符转换为utf8乱码,则采用把乱码的字符改为原有的编码格式,utf8字符保持不变。

你可能感兴趣的:(乱码)