Bueno, esa función substr() hace una ruptura de la cadena por un número de caracteres y lo que imagino que está pasando es que justamente la ruptura de la cadena ha pillado en un lugar que ha roto la codificación de UTF-8.
Hay una función de PHP que te puede ayudar a resolverlo, que justamente se ocupa de hacer la sub-cadena de manera segura, para que no se rompa la codificación del texto en formato UTF-8: mb_substr()
Es una función nativa de PHP que está desde PHP 4, por lo que no tendrás problema al usarla. Funciona exactamente igual que substr(), pero puedes consultar la documentación de PHP para más detalles.
Para solucionarlo, simplemente cambia tu código por este otro:
$summary = mb_substr($info, 0, 50);
echo $summary;