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分页类的代码
May 18 PHP
php生成excel列序号代码实例
Dec 24 PHP
php cli换行示例
Apr 22 PHP
php自定义函数截取汉字长度
May 15 PHP
浅谈php函数serialize()与unserialize()的使用方法
Aug 19 PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
win7安装php框架Yii的方法
Jan 25 PHP
Smarty环境配置与使用入门教程
May 11 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
May 28 PHP
ThinkPHP5 验证器的具体使用
May 31 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
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
2018/06/19 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
vue-axios使用详解
2017/05/10 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
Python中使用不同编码读写txt文件详解
2015/05/28 Python
详解Django框架中的视图级缓存
2015/07/23 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
python二进制文件的转译详解
2019/07/03 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
python带参数打包exe及调用方式
2019/12/21 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
关键字final的用法
2013/10/02 面试题
性能测试工程师的面试题
2015/02/20 面试题
教师研修随笔感言
2014/01/23 职场文书
个人四风对照检查材料
2014/09/26 职场文书
先进员工事迹材料
2014/12/20 职场文书
向女朋友道歉的话
2015/01/20 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
党员个人自我评价
2015/03/03 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL