Как вывести текст из MySQL без непечатаемого пробела (& nbsp; )?
Проблема возникает из-за того, что разбиение на страницы происходит для фиксированного количества символов. $text = substr($data['text'], $i*850, 850);
Этот код не знает о том, что & nbsp; это один символ. Поэтому амперсанд оказывается на одной странице, а код nbsp; на другой.
Чтобы решить проблему, придется усложнить алгоритм.  Например, можно разбить текст на слова, и выводить на одной странице слова, сумма длин которых в сумме с количеством разделителей слов не превышает заданное у вас в коде число 850.
Самое простейшее решение, разбить текст на слова с помощью explode(), более интеллектуальное решение можно реализовать, используя preg_split() и регулярные выражения.// формируем массив слов
// считаем, что все слова разделены пробелом
$words = explode(' ', $data['text'])
// далее должен идти код, который определит
// какие слова будут выведены на этой странице
Таким образом, у вас не получится разделить символ & nbsp; и другие спецсимволы на две страницы. Надеюсь, что новый алгоритм разбиения вы сможете написать самостоятельно.
P.S. А самое простое и грубое решение, избавиться вообще от источника проблемы:$data['text'] = html_entity_decode($data['text'], ENT_NOQUOTES);
Документация здесь: www.php.su/functions/?html-entity-decode
UPD. Набросал недостающий кусок кода. Не тестировал, но должно работать.<?php 
while ($data = mysql_fetch_array($qr_result)) {
 $count_pages = ceil(strlen($data['text']) / 850);
// разбиваем текст на слова
 $words = explode(' ', $data['text']);
// начинаем вывод с первого слова
 $current_word_index = 0;
// формируем текст страницы
$page_text = '';
 while ($current_word_index < count($words)){
	 // если длина текущего текста страницы
	 // плюс пробел плюс следующее слово меньше 850
	if (strlen($page_text . $words[$current_word_index] . ' ') <= 850){
		// добавляем слово с пробелом к тексту
		$page_text .= $words[$current_word_index] . ' ';
		// переходим к следующему слову
		$current_word_index++;
	}
	else{ // в противном случае выводим страницу
	?>
	<div>
		<p><?=$page_text?></p>
	</div>
	<?	
		// 
		$page_text = '';
	}
	// если мы дошли до последнего слова, то выводим весь оставшийся текст
	if ($current_word_index == count($words) - 1){
		?>
		<div>
			<p><?=$page_text . ' ' . $words[$current_word_index]?></p>
		</div>
		<?
	}
  }
} ?>
Выводить как HTML например. Без htmlencode.