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 相关文章推荐
用Socket发送电子邮件(利用需要验证的SMTP服务器)
Oct 09 PHP
用cookies来跟踪识别用户
Oct 09 PHP
PHP中for循环语句的几种变型
Nov 26 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
php使用curl并发减少后端访问时间的方法分析
May 12 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
Jun 24 PHP
PHP生成及获取JSON文件的方法
Aug 23 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
Symfony2针对输入时间进行查询的方法分析
Jun 28 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
PHP中define() 与 const定义常量的区别详解
Jun 25 PHP
PHP 实现链式操作
Mar 09 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调用数据库的存贮过程
2006/10/09 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
王纯业的Python学习笔记 下载
2007/02/10 Python
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
Django自定义分页效果
2017/06/27 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
keras自定义损失函数并且模型加载的写法介绍
2020/06/15 Python
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
印尼旅游网站:via
2017/11/12 全球购物
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
群众路线组织生活会发言材料
2014/10/17 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python
Mysql binlog日志文件过大的解决
2021/10/05 MySQL
vue ref如何获取子组件属性值
2022/03/31 Vue.js
基于PyQt5制作一个群发邮件工具
2022/04/08 Python