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 相关文章推荐
第十四节--命名空间
Nov 16 PHP
phpMyAdmin2.11.6安装配置方法
Aug 24 PHP
PHP小程序自动提交到自助友情连接
Nov 24 PHP
JS与PHP向函数传递可变参数的区别实例代码
May 18 PHP
PHP文件打开、关闭、写入的判断与执行代码
May 24 PHP
header跳转和include包含问题详解
Sep 08 PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
PHP扩展Memcache分布式部署方案
Dec 06 PHP
Zend Framework开发入门经典教程
Mar 23 PHP
PHP实现的简单AES加密解密算法实例
May 29 PHP
php实现支付宝当面付(扫码支付)功能
May 30 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自动生成后台导航网址的最佳方法
2013/08/27 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
2016/03/01 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
浅谈js中的bind
2019/03/18 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
python字符串对其居中显示的方法
2015/07/11 Python
python正则分析nginx的访问日志
2017/01/17 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
python读取文本中的坐标方法
2018/10/14 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
Python3实现的回文数判断及罗马数字转整数算法示例
2019/03/27 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
银行实习自我鉴定
2013/10/12 职场文书
小学生演讲稿
2014/01/12 职场文书
自主实习接收函
2014/01/13 职场文书
中药学自荐信
2014/06/15 职场文书
redis限流的实际应用
2021/04/24 Redis
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS
Python时间操作之pytz模块使用详解
2022/06/14 Python