PHP学习笔记之字符串编码的转换和判断


Posted in PHP onMay 22, 2014
iconv('GBK', 'UTF-8//IGNORE', '三水点靠木'); // 将字符串由 GBK 编码转换为 UTF-8 编码

但 iconv 只能解决编码预先知道的情况,如果字符串编码未知,则需要先探测其编码,这时可能会用到 mb_string 扩展库:

mb_detect_encoding('三水点靠木');

可是 mb_detect_encoding 存在一个硬伤,经常出现判断不准确的情况。或许这样就可以解决:

// 使用 iconv 转换并判断是否等值,效率不高
function is_utf8 ($str) {
    if ($str === iconv('UTF-8', 'UTF-8//IGNORE', $str)) {
        return 'UTF-8';
    }
}
// 多种编码的情况
function detect_encoding ($str) {
    foreach (array('GBK', 'UTF-8') as $v) {
        if ($str === iconv($v, $v . '//IGNORE', $str)) {
            return $v;
        }
    }
}

通过以上方式得到字符串编码信息后,就可以利用 iconv 或 mb_convert_encoding 来转换编码了。

PHP 相关文章推荐
php变量作用域的深入解析
Jun 03 PHP
linux中cd命令使用详解
Jan 08 PHP
php写入数据到CSV文件的方法
Mar 14 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 PHP
PHP实现微信提现功能(微信商城)
Nov 21 PHP
PHP+memcache实现消息队列案例分享
May 21 #PHP
php+highchats生成动态统计图
May 21 #PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 #PHP
Smarty模板学习笔记之Smarty简介
May 20 #PHP
php实例分享之mysql数据备份
May 19 #PHP
dedecms函数分享之获取某一栏目所有子栏目
May 19 #PHP
ECMall支持SSL连接邮件服务器的配置方法详解
May 19 #PHP
You might like
基于mysql的论坛(5)
2006/10/09 PHP
关于PHP结束标签的使用细节探讨及联想
2013/03/04 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
[06:49]2018DOTA2国际邀请赛寻真——VirtusPro傲视群雄
2018/08/12 DOTA
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
Python的语言类型(详解)
2017/06/24 Python
python读取Excel实例详解
2018/08/17 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
Python库安装速度过慢解决方案
2020/07/14 Python
Pygame框架实现飞机大战
2020/08/07 Python
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
个人找工作求职简历的自我评价
2013/10/20 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
雨中的树观后感
2015/06/03 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python