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 5.0 Pear安装方法
Dec 06 PHP
win7计划任务定时执行PHP脚本设置图解
May 09 PHP
php.ini save_handler 修改不生效的解决办法
Jul 22 PHP
php判断一个数组是否为有序的方法
Mar 27 PHP
优化WordPress的Google字体以加速国内服务器上的运行
Nov 24 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
PHP获取用户访问IP地址的5种方法
May 16 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
php 将json格式数据转换成数组的方法
Aug 21 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 PHP
PHP创建对象的六种方式实例总结
Jun 27 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创建对象的六种方式实例总结
2019/06/27 PHP
js表格分页实现代码
2009/09/18 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
深入理解js promise chain
2016/05/05 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
python简单线程和协程学习心得(分享)
2017/06/14 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
Python爬虫包BeautifulSoup实例(三)
2018/06/17 Python
python 字符串只保留汉字的方法
2018/11/16 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
PHP面试题附答案
2015/11/28 面试题
介绍一下如何优化MySql
2016/12/20 面试题
女方婚礼新郎答谢词
2014/01/11 职场文书
农业生产宣传标语
2014/10/08 职场文书
《开国大典》教学反思
2016/02/16 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang
用Python实现屏幕截图详解
2022/01/22 Python