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

yipeiwu_com5年前PHP代码库

复制代码 代码如下:

iconv('GBK', 'UTF-8//IGNORE', '【宜配屋www.yipeiwu.com】'); // 将字符串由 GBK 编码转换为 UTF-8 编码

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

复制代码 代码如下:

mb_detect_encoding('【宜配屋www.yipeiwu.com】');

可是 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 XML操作类DOMDocument

DOMDocument相关的内容. 属性: Attributes 存储节点的属性列表(只读) childNodes 存储节点的子节点列表(只读) dataType 返回此节点的数据类型...

php设计模式之装饰模式应用案例详解

本文实例讲述了php设计模式之装饰模式。分享给大家供大家参考,具体如下: 介绍 装饰者模式(Decorator Pattern)允许你向一个现有的对象添加新的功能,同时又不改变其结...

PHP实现带进度条的Ajax文件上传功能示例

PHP实现带进度条的Ajax文件上传功能示例

本文实例讲述了PHP实现带进度条的Ajax文件上传功能。分享给大家供大家参考,具体如下: 之前分享了一篇关于 php使用FileApi实现Ajax上传文件 的文章,里面的Ajax文件上传...

PHP反射机制用法实例

本文实例讲述了PHP反射机制的用法,分享给大家供大家参考之用。具体方法如下: 演示示例代码如下所示: <?php class ClassOne { function...

PHP 中文乱码解决办法总结分析

一.首先是PHP网页的编码 1. php文件本身的编码与网页的编码应匹配 a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/ht...