我知道如果你需要在PHP中获取文件的字符编码,可以这样做:
var_dump (mb_detect_encoding (file_get_contents ("somefile.txt")));
然而,对于大文件来说这并不实用,因为它会占用大量内存。
有没有一种可靠的方法,在不必将整个文件读入内存的情况下确定字符编码呢?
var_dump (mb_detect_encoding (file_get_contents ("somefile.txt")));
然而,对于大文件来说这并不实用,因为它会占用大量内存。
有没有一种可靠的方法,在不必将整个文件读入内存的情况下确定字符编码呢?
不,没有办法在不读取整个文件的情况下可靠地确定字符编码。
原因:与 ASCII 不同的字符代码(仍然是许多编码的基本部分)在文件中是随机分布的。它们可能恰好都在您没有读取的部分。
当然,有些编码非常容易从开头识别,但这不是这里的问题。
(给您一个机会接受答案作为解决方案,尽管答案可能已经在评论中给出,这是您不应该做的(SO 政策)。)
是的,您可以使用缓存, 您可以使用下面的函数来帮助您实现相同的功能
例如:
输出: string(6) "Hello " string(11) "Hello World"
更多的函数:
PHP_OUTPUT_HANDLER_CLEANABLE ob_clean()、ob_end_clean() 和 ob_get_clean()。 PHP_OUTPUT_HANDLER_FLUSHABLE ob_end_flush()、ob_flush() 和 ob_get_flush()。 PHP_OUTPUT_HANDLER_REMOVABLE ob_end_clean()、ob_end_flush() 和 ob_get_flush()。
有关更多信息,请访问:http://www.php.net/manual/en/function.ob-start.php