[英]Charset detection in PHP
//我添加了一個新的看法,請參閱作弊PHP整數 。 任何幫助都感激不盡。 我有一個想法,通過將整數打包成無符號字節來嘗試和破解數組的存儲選項(只需要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),如果沒有轉換它。 也許你可以使用這些代碼。
首先,你正在做的有趣的項目! 我很好奇最終產品將如何。
您已經看過ICU項目了嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.