Первое что пришло в голову:
<?php
/* *
* text.txt
* *
* 氦喀急45ш 8d01
* */
$f = fopen('text.txt','r');
$symbols = 10;
$sum = 0;
while ($sum < $symbols && ($line = fgets($f))!== false)
{
if(($sum + mb_strlen($line, 'UTF8')) > $symbols)
{
$line = mb_substr($line,0, $symbols - $sum, 'UTF8');
}
$sum+=mb_strlen($line, 'UTF8');
echo $line;
}
fclose($f);
echo '<br><br> Символов: ' . $sum;
/*
Результат:
氦喀急45ш 8d0
Символов: 10
*/
?>
Так же проверил на книге весом 1Мб. В кодировке UTF-8