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下MYSQL limit的优化
Jan 10 PHP
在命令行下运行PHP脚本[带参数]的方法
Jan 22 PHP
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
PHP获取网址的顶级域名函数代码
Sep 24 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
解析php类的注册与自动加载
Jul 05 PHP
php自定义session示例分享
Apr 22 PHP
PHP中基本HTTP认证技巧分析
Mar 16 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 PHP
PHP获得数组交集与差集的方法
Jun 10 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 PHP
Laravel框架源码解析之入口文件原理分析
May 14 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
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
Python求导数的方法
2015/05/09 Python
浅谈Python peewee 使用经验
2017/10/20 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
新西兰优惠网站:Treat Me
2019/07/04 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
铭万公司.net面试题笔试题
2014/07/20 面试题
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
六一节目主持词
2014/04/01 职场文书
完美的中文自荐信
2014/05/24 职场文书
装修活动策划方案
2014/08/27 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
2014年话务员工作总结
2014/11/19 职场文书
2014年工程部工作总结
2014/11/25 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
python绘制简单直方图(质量分布图)的方法
2022/04/21 Python