response.read()
returns a bytestring. Python shouldn't die while printing a bytestring because no character conversion occurs, bytes are printed as is.
You could try to print Unicode instead:
text = page.decode(response.info().getparam('charset') or 'utf-8')
print text