PHP中文乱码解决方案


Posted in PHP onMarch 05, 2015

汉字乱码真是一个悲催的事情,JAVA讨厌汉字,PHP也不喜欢汉字;

    Java乱码最终使用了spring给出的过滤器来过滤,处处过滤,其实影响了速度,不过没有办法,汉字就是W国首先不考虑的事情;

    想不到PHP也是乱码处处在,当你使用亲兄弟MySQL的时候,汉字显得那么亲切,从未考虑过他会变成天书;不过为了和其他其他交互,把PHP的手伸到SQL SERVER的时候,乱码来了,原因是第三方系统用的GBK编码;

    哎,转换吧;

   1,PHP自带的转换函数ICONV,一个高大上的函数;

string iconv ( string $in_charset , string $out_charset , string $str )

   使用DEMO:

<?php

$text = "This is the Euro symbol '?'.";

echo 'Original : ', $text, PHP_EOL;

echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;

echo 'IGNORE   : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;

echo 'Plain    : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;

?>

   大家都推荐的函数,不过使用之后无法转换,没有错误,字符也没有转换,NO!

  2,另辟蹊径,还有一个大家质疑效率不高的函数,不过无论如何,先实现再考虑其他三

//检查该函数是否可用

echo function_exists('mb_convert_encoding');

//检测当前编码

echo mb_detect_encoding($val, "GBK, GB2312, UTF-8");

//转换编码,把CP936(就是GBK)转换成UTF-8

$v=mb_convert_encoding ($val, "UTF-8", "CP936");

结果成功了;

  好吧,先用着吧,为了转换数据库查询的结果集,制作一个转换函数:

  1,函数“乱码克星”:

// $fContents 字符串

// $from 字符串的编码

// $to 要转换的编码

function auto_charset($fContents,$from='gbk',$to='utf-8'){

    $from   =  strtoupper($from)=='UTF8'? 'utf-8':$from;

    $to       =  strtoupper($to)=='UTF8'? 'utf-8':$to;

    if( strtoupper($from) === strtoupper($to) || empty($fContents) || (is_scalar($fContents) && !is_string($fContents)) ){

        //如果编码相同或者非字符串标量则不转换

        return $fContents;

    }

    if(is_string($fContents) ) {

        if(function_exists('mb_convert_encoding')){

            return mb_convert_encoding ($fContents, $to, $from);

        }else{

            return $fContents;

        }

    }

    elseif(is_array($fContents)){

        foreach ( $fContents as $key => $val ) {

            $_key =     auto_charset($key,$from,$to);

            $fContents[$_key] = auto_charset($val,$from,$to);

            if($key != $_key )

                unset($fContents[$key]);

        }

        return $fContents;

    }

    else{

        return $fContents;

    }

}

2,使用:

//打印输出查询结果(假设你的结果)

$arr=array();

while($list=mssql_fetch_row($row))

{

    $arr[]=$list;

}

$s=auto_charset($arr,'gbk','utf-8');

//打印试试,在浏览器设置编码为UFT-8,看没有乱码

print_r($s);die();

以上所述就是本文关于php中文乱码的介绍了,希望大家能够喜欢。

PHP 相关文章推荐
PHP新手上路(十一)
Oct 09 PHP
php设计模式 Visitor 访问者模式
Jun 28 PHP
浅析PHP中Collection 类的设计
Jun 21 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
php中 ob_start等函数截取标准输出的方法
Jun 22 PHP
四个PHP非常实用的功能
Sep 29 PHP
php htmlentities()函数的定义和用法
May 13 PHP
支付宝服务窗API接口开发php版本
Jul 20 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
Nov 05 PHP
利用PHP生成CSV文件简单示例
Dec 21 PHP
php实现评论回复删除功能
May 23 PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 #PHP
PHP使用适合阅读的格式显示文件大小的方法
Mar 05 #PHP
PHP获取QQ达人QQ信息的方法
Mar 05 #PHP
PHP访问Google Search API的方法
Mar 05 #PHP
PHP使用PDO连接ACCESS数据库
Mar 05 #PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 #PHP
PHP解析RSS的方法
Mar 05 #PHP
You might like
PHP 和 MySQL 基础教程(二)
2006/10/09 PHP
PHP脚本的10个技巧(7)
2006/10/09 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
人生苦短我用python python如何快速入门?
2018/03/12 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python 内置模块详解
2019/01/01 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
Python 如何批量更新已安装的库
2020/05/26 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
酒店前厅员工辞职信
2014/01/08 职场文书
打架检讨书100字
2014/01/19 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
保研推荐信格式
2015/03/25 职场文书
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL