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预定义常量
Dec 25 PHP
通过PHP CLI实现简单的数据库实时监控调度
Jul 01 PHP
PHP 字符串分割和比较
Oct 06 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
小谈php正则提取图片地址
Mar 27 PHP
Laravel重写用户登录简单示例
Oct 08 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
php封装json通信接口详解及实例
Mar 07 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
Mar 15 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
PHP JWT初识及其简单示例
Oct 10 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
Apr 07 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实现让关联字段支持搜索功能的方法
2016/08/10 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
Js 刷新框架页的代码
2010/04/13 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
如何利用python查找电脑文件
2018/04/27 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
聊聊python中的循环遍历
2020/09/07 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
Linux面试经常问的文件系统操作命令
2016/10/04 面试题
儿科护理实习自我鉴定
2013/09/19 职场文书
幼儿园教师辞职信
2014/01/18 职场文书
房贷收入证明范本
2015/06/12 职场文书
植树节新闻稿
2015/07/17 职场文书
ORACLE查看当前账号的相关信息
2021/06/18 Oracle