php自动识别文字编码并转换为目标编码的方法


Posted in PHP onAugust 08, 2015

本文实例讲述了php自动识别文字编码并转换为目标编码的方法。分享给大家供大家参考。具体如下:

在PHP处理页面的时候,我们对于字符集的转换都是采用了iconv或者mb_convert等函数,但,这其实是有一个前提的。即我们事先得知道in和out是什么样的编码,我们才能进行正确的转换。

虽然大多数转换都是在gbk和utf-8之间转,但如果不知道转换对象的编码怎么办呢?谷歌出来这么一个函数safeEncoding,可以简单的识别UTF8和GBK的编码。这个函数在一定程度上识别的很准确,但是在一些比较复杂的环境中就不是那么的好用了. 下面我结合了GBK和UTF-8编码的不同点,使用正则表达式来判断UTF-8编码并使用mb_convert_encoding函数来进行转换. 在国内,基本上比较流行的编码就是GBK和UTF-8, 所以这个函数是针对这两个编码进行自动转换的.

/**
* @ string 需要转换的文字
* @ encoding 目标编码
**/
function detect_encoding($string,$encoding = 'gbk'){
 $is_utf8 = preg_match('%^(?:[\x09\x0A\x0D\x20-\x7E]| [\xC2-\xDF][\x80-\xBF]| \xE0[\xA0-\xBF][\x80-\xBF] | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  | \xED[\x80-\x9F][\x80-\xBF] | \xF0[\x90-\xBF][\x80-\xBF]{2} | [\xF1-\xF3][\x80-\xBF]{3} | \xF4[\x80-\x8F][\x80-\xBF]{2} )*$%xs', $string);
 if($is_utf8 && $encoding == 'utf8'){
  return $string;
 }elseif($is_utf8){
  return mb_convert_encoding($string, $encoding, "UTF-8");
 }else{
  return mb_convert_encoding($string, $encoding, 'gbk,gb2312,big5');
 }
}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
用PHP的ob_start();控制您的浏览器cache!
Feb 14 PHP
利用discuz自带通行证整合dedecms的方法以及文件下载
Mar 06 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
PHP clearstatcache()函数详解
Mar 02 PHP
在smarty模板中使用PHP函数的方法
Apr 23 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
PHP中文乱码解决方案
Mar 05 PHP
php自定义函数转换html标签示例
Sep 29 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
PHP实现生成带背景的图形验证码功能
Oct 03 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 PHP
php操作redis命令及代码实例大全
Nov 19 PHP
PHP模拟asp中response类实现方法
Aug 08 #PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 #PHP
PHP中使用curl伪造IP的简单方法
Aug 07 #PHP
smarty中常用方法实例总结
Aug 07 #PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 #PHP
PHP下载生成的csv文件及问题总结
Aug 06 #PHP
PHP获取一年有几周以及每周开始日期和结束日期
Aug 06 #PHP
You might like
一个捕获函数输出的函数
2007/02/14 PHP
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
JavaScript中instanceof运算符的用法总结
2013/11/19 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
日语翻译个人求职的自我评价
2013/10/14 职场文书
外国人聘用意向书
2014/04/01 职场文书
法学专业求职信
2014/07/15 职场文书
个人委托书范文
2015/01/28 职场文书
质量保证书格式模板
2015/02/27 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript