加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中的Charset检测

发布时间:2020-12-13 22:30:12 所属栏目:PHP教程 来源:网络整理
导读://我添加了一个新的参与,请参阅 Cheating PHP integers.任何帮助都感激不尽.我有一个想法,通过将整数打包成无符号字节来尝试和破解数组的存储选项(只需要8或16位整数来大大减少内存). 你好 我目前正在研究自定义字符集检测库,并使用Mozilla的字符集检测算法
//我添加了一个新的参与,请参阅 Cheating PHP integers.任何帮助都感激不尽.我有一个想法,通过将整数打包成无符号字节来尝试和破解数组的存储选项(只需要8或16位整数来大大减少内存).

你好

我目前正在研究自定义字符集检测库,并使用Mozilla的字符集检测算法创建了一个端口,并使用chardet(python端口)来提供帮助.但是,这在PHP中是非常耗费内存的(如果我只加载西方语言检测,大约30mb的内存).我已经优化了所有我可以从头开始重新加载每一块(这会减少内存,但会使它慢很多).

我的问题是,你知道任何进行字符集检测的LGPL PHP库吗?
这纯粹是为了让我在正确的方向上给予指导.

我已经知道了mb_detect_encoding,但它太有限了,并且我用的文本文件带来了太多误报(但是python的chardet完全检测到它们)

解决方法

我创建了一个正确编码为UTF-8的方法.但很难弄清楚当前编码的是什么,所以我找到了这个解决方案:

<?php
function _convert($content) { 
    if(!mb_check_encoding($content,'UTF-8')
        OR !($content === mb_convert_encoding(mb_convert_encoding($content,'UTF-32','UTF-8' ),'UTF-8','UTF-32'))) {

        $content = mb_convert_encoding($content,'UTF-8');

        if (mb_check_encoding($content,'UTF-8')) {
            // log('Converted to UTF-8');
        } else {
            // log('Could not converted to UTF-8');
        }
    }
    return $content;
}
?>

如你所见,我做了一个转换来检查它是否仍然相同(UTF-8/16),如果没有转换它.也许你可以使用这些代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读