diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst
index 9496083696a..8928882c328 100644
--- a/Doc/library/urllib.request.rst
+++ b/Doc/library/urllib.request.rst
@@ -1072,30 +1072,37 @@ HTTPErrorProcessor Objects
Examples
--------
-This example gets the python.org main page and displays the first 100 bytes of
+This example gets the python.org main page and displays the first 300 bytes of
it.::
>>> import urllib.request
>>> f = urllib.request.urlopen('http://www.python.org/')
- >>> print(f.read(100))
- b'
- >> print(f.read(300))
+ b'\n\n\n\n\n
\n
+ \n
+ Python Programming '
-Note that in Python 3, urlopen returns a bytes object by default. In many
-circumstances, you might expect the output of urlopen to be a string. This
-might be a carried over expectation from Python 2, where urlopen returned
-string or it might even the common usecase. In those cases, you should
-explicitly decode the bytes to string.
+Note that urlopen returns a bytes object. This is because there is no way
+for urlopen to automatically determine the encoding of the byte stream
+it receives from the http server. In general, a program will decode
+the returned bytes object to string once it determines or guesses
+the appropriate encoding.
-In the examples below, we have chosen *utf-8* encoding for demonstration, you
-might choose the encoding which is suitable for the webpage you are
-requesting::
+The following W3C document, http://www.w3.org/International/O-charset , lists
+the various ways in which a (X)HTML or a XML document could have specified its
+encoding information.
+
+As python.org website uses *utf-8* encoding as specified in it's meta tag, we
+will use same for decoding the bytes object. ::
>>> import urllib.request
>>> f = urllib.request.urlopen('http://www.python.org/')
- >>> print(f.read(100).decode('utf-8')
-
- >> print(fp.read(100).decode('utf-8'))
+