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 相关文章推荐
PHP5/ZendEngine2的改进
Oct 09 PHP
高亮度显示php源代码
Oct 09 PHP
模仿OSO的论坛(三)
Oct 09 PHP
php 模拟get_headers函数的代码示例
Apr 27 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
Aug 16 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 PHP
php有效防止同一用户多次登录
Nov 19 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
thinkphp5.1框架模板布局与模板继承用法分析
Jul 19 PHP
通过实例解析PHP数据类型转换方法
Jul 11 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 文件系统详解
2012/09/13 PHP
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
php class类的用法详细总结
2013/10/17 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
javascript parseInt 大改造
2009/09/27 Javascript
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
vuex 的简单使用
2018/03/22 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
Madewell美德威尔美国官网:美国休闲服饰品牌
2016/11/25 全球购物
信息专业个人的自我评价
2013/12/27 职场文书
职工运动会感言
2014/02/07 职场文书
企业演讲比赛主持词
2014/03/18 职场文书
党校毕业心得体会
2014/09/13 职场文书
小学生毕业评语
2014/12/26 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
2015大学迎新标语
2015/07/16 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
python实现简易自习室座位预约系统
2021/06/30 Python