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 文件夹删除、php清除缓存程序
Aug 25 PHP
Ha0k 0.3 PHP 网页木马修改版
Oct 11 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 PHP
php DOS攻击实现代码(附如何防范)
May 29 PHP
使用php语句将数据库*.sql文件导入数据库
May 05 PHP
PHP采集类Snoopy抓取图片实例
Jun 19 PHP
PHP函数http_build_query使用详解
Aug 20 PHP
Symfony数据校验方法实例分析
Jan 26 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 PHP
PHP fopen函数用法实例讲解
Feb 15 PHP
浅谈Laravel中使用Slack进行异常通知
May 29 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
PHP中的超全局变量
2006/10/09 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
关于跨站脚本攻击问题
2011/12/22 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
layer 刷新某个页面的实现方法
2019/09/05 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
微信小程序实现星星评分效果
2020/11/01 Javascript
Python中类的继承代码实例
2014/10/28 Python
Python中的super用法详解
2015/05/28 Python
python assert的用处示例详解
2019/04/01 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
解决Keras 自定义层时遇到版本的问题
2020/06/16 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
机电一体化自荐信
2013/12/10 职场文书
写给女生的道歉信
2014/01/08 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
2015年幼儿园安全工作总结
2015/05/12 职场文书
中秋节感想
2015/08/10 职场文书
导游词之西递宏村
2019/12/10 职场文书
python OpenCV学习笔记
2021/03/31 Python
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python