PHP中的Charset检测

时间:2011-03-31 18:12:37

标签: php character-encoding

//我添加了一个新内容请参阅Cheating PHP integers。任何帮助都感激不尽。我有一个想法,通过将整数打包成无符号字节来尝试和破解数组的存储选项(只需要8或16位整数来大大减少内存)。

您好

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

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

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

2 个答案:

答案 0 :(得分:1)

我创建了一个正确编码为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),如果没有转换它。也许你可以使用这些代码。

答案 1 :(得分:0)

首先,您正在开展的有趣项目!我很好奇最终产品将如何。

您是否已经查看了ICU project