Heim  >  Artikel  >  Backend-Entwicklung  >  学习php字符串编码的转换与判断

学习php字符串编码的转换与判断

WBOY
WBOYOriginal
2016-07-25 08:56:22886Durchsuche
本文介绍下,php编程中进行字符串编码的转码与判断的一段代码,有需要的朋友可以拿去做个参考。 在php中经常需要实现GBK 和 UTF-8 编码转换,比如像 PHP 中的 json_encode 本身根本不支持 GBK 形式的编码。 有两个库函数能够支持编码的转换,通常能够想到的就是 iconv 函数,你如:
<?php
iconv('GBK', 'UTF-8//IGNORE', '芒果小站'); // 将字符串由 GBK 编码转换为 UTF-8 编码
但 iconv 只能解决编码预先知道的情况,如果字符串编码未知,则需要先探测其编码,这时可能会用到 mb_string 扩展库:
<?php
mb_detect_encoding('程序员之家');
可是 mb_detect_encoding 存在一个硬伤,经常出现判断不准确的情况。 可以参考如下的解决方法:
<?php
// 使用 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 进行编码转换了。


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn