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设计模式 注册表模式
Feb 05 PHP
php导入导出excel实例
Oct 25 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
微信公众平台DEMO(PHP)
May 04 PHP
100多行PHP代码实现socks5代理服务器[2]
May 05 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
PHP怎样用正则抓取页面中的网址
Aug 09 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
thinkPHP中session()方法用法详解
Dec 08 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 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
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
javascript中clone对象详解
2014/12/03 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
2017/08/19 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
vue基础之事件v-onclick="函数"用法示例
2019/03/11 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
python计算一个序列的平均值的方法
2015/07/11 Python
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
python使用pygame框架实现推箱子游戏
2018/11/20 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
大学毕业生工作的自我评价
2013/10/01 职场文书
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
国际贸易专业求职信
2014/06/04 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android