Hey @xyb,

Thanks for the fix and an explanation. This approach makes sense; it is basically undoing what Python 2.x repr is doing for unicode strings (if we don't want to print new lines, etc.) 

A couple of notes:

1) Your regex doesn't catch all symbols that can be safely decoded, e.g. ² (`\xb2`) or £ (`\xa3`) could be nice to see in the output;
2) 'readable_repr' name is a bit confusing because in Python 2.x repr must be a bytestring, and readable_repr returns unicode. What do you think about calling it e.g. 'unicode_repr'?

The best fix for this issue would be to port scrapely to Python 3 - it doesn't escape non-ascii letters and symbols in repr of unicode strings, but w3lib must be ported before that :)