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

2015-01-24信息快讯网

GBK 和 UTF-8 编码的转换是一个非常恶心的事情,比如像 PHP 中的 json_encode 本身根本不支持 GBK 形式的编码。有两个库函数能够支持编码的转换,通常能够想到的就是 iconv 函数,使用起来也非常爽:

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改进计算字符串相似度的函数similar_text()、levenshtein()
php cookie名使用点号(句号)会被转换
php中字符串和正则表达式详解
PHP与MYSQL中UTF8编码的中文排序实例
php中的字符编码转换函数用法示例
PHP清除数组中所有字符串两端空格的方法
php中字符集转换iconv函数使用总结
php中文字符串截取方法实例总结
php实现的替换敏感字符串类实例
访问编码后的中文URL返回404错误的解决方法
PHP中IP地址与整型数字互相转换详解
PHP解码unicode编码的中文字符代码分享
两种设置php载入页面时编码的方法
PHP实现把文本中的URL转换为链接的auolink()函数分享
支持生僻字且自动识别utf-8编码的php汉字转拼音类
php 判断网页是否是utf8编码的方法
PHP函数strip_tags的一个bug浅析
PHP+memcache实现消息队列案例分享
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
php通过数组实现多条件查询实现方法(字符串分割)
PHP生成自定义长度随机字符串的函数分享
PHP的preg_match匹配字符串长度问题解决方法
PHP英文字母大小写转换函数小结
php将字符串转化成date存入数据库的两种方式
php检测文件编码的方法示例
自己写了一个php检测文件编码的函数
php使用json_encode对变量json编码
php验证是否是md5编码的简单代码
php时间戳转换的示例
php5.2 Json不能正确处理中文、GB编码的解决方法
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
php数组编码转换示例详解
php实现文件编码批量转换
php根据操作系统转换文件名大小写的方法
©2014-2024 dbsqp.com