乱码解决方案

乱码解决办法

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

问题重现

首先数据库连接工具使用的navicat
在这里插入图片描述
可以看到这里对数据库进行了utf8编码,即里面显示的数据编码是utf8

在这里插入图片描述
这里可以看到正常显示的文字编码格式就是utf8编码,乱码就不知道是什么最初未转码为utf8之前的编码格式了

测试乱码的编码格式

这里有一个测试乱码网站

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

我们把乱码的字符串放上去检测
在这里插入图片描述
因为之前我们已经把所有的编码格式统一为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字符保持不变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值