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下检测字符串是否是utf8编码的代码
Jun 28 PHP
《PHP编程最快明白》第八讲:php启发和小结
Nov 01 PHP
php把session写入数据库示例
Feb 26 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
php技术实现加载字体并保存成图片
Jul 27 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
Dec 25 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
Aug 23 PHP
Yii 2.0自带的验证码使用经验分享
Jun 19 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
Jun 29 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 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生成带有雪花背景的验证码
2008/09/28 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
PHP new static 和 new self详解
2017/02/19 PHP
html读出文本文件内容
2007/01/22 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
jQuery实现获取元素索引值index的方法
2016/09/18 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
python实现的文件同步服务器实例
2015/06/02 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
python实现点对点聊天程序
2018/07/28 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
Python 项目转化为so文件实例
2019/12/23 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
pytorch数据预处理错误的解决
2020/02/20 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
学生不讲诚信检讨书
2014/09/29 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
设备技术员岗位职责
2015/04/11 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
2019秋季运动会口号
2019/06/25 职场文书
Python内置数据类型中的集合详解
2022/03/18 Python
Android Rxjava3 使用场景详解
2022/04/07 Java/Android