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执行速率优化技巧小结
Mar 15 PHP
php 代码优化之经典示例
Mar 24 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
CodeIgniter基本配置详细介绍
Nov 12 PHP
thinkphp控制器调度使用示例
Feb 24 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
PHP递归遍历多维数组实现无限分类的方法
May 06 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
Apr 19 PHP
实例讲解php将字符串输出到HTML
Jan 27 PHP
PDO::lastInsertId讲解
Jan 29 PHP
用PHP的反射实现委托模式的讲解
Mar 22 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
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2017/04/26 PHP
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
javascript之函数直接量(function(){})()
2007/06/29 Javascript
Javascript 入门基础学习
2010/03/10 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
Python KMeans聚类问题分析
2018/02/23 Python
Python中字符串与编码示例代码
2019/05/20 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
python实现批量处理将图片粘贴到另一张图片上并保存
2019/12/12 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
python构造IP报文实例
2020/05/05 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
英国著名的药妆网站:Escentual
2016/07/29 全球购物
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
优质服务口号
2014/06/11 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
护士求职简历自我评价
2015/03/10 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
单位证明范文
2015/06/18 职场文书