diff --git a/Doc/library/asynchat.rst b/Doc/library/asynchat.rst
index 55c61d7..adbd3be 100644
--- a/Doc/library/asynchat.rst
+++ b/Doc/library/asynchat.rst
@@ -56,8 +56,8 @@
    have only one method, :meth:`more`, which should return data to be
    transmitted on the channel.
    The producer indicates exhaustion (*i.e.* that it contains no more data) by
-   having its :meth:`more` method return the empty string. At this point the
-   :class:`async_chat` object removes the producer from the fifo and starts
+   having its :meth:`more` method return the empty bytes object. At this point
+   the :class:`async_chat` object removes the producer from the fifo and starts
    using the next producer, if any. When the producer fifo is empty the
    :meth:`handle_write` method does nothing. You use the channel object's
    :meth:`set_terminator` method to describe how to recognize the end of, or
@@ -221,7 +221,7 @@
        def found_terminator(self):
            if self.reading_headers:
                self.reading_headers = False
-               self.parse_headers("".join(self.ibuffer))
+               self.parse_headers(b"".join(self.ibuffer))
                self.ibuffer = []
                if self.op.upper() == b"POST":
                    clen = self.headers.getheader("content-length")
diff --git a/Doc/library/asyncore.rst b/Doc/library/asyncore.rst
index 8f494d0..1521e72 100644
--- a/Doc/library/asyncore.rst
+++ b/Doc/library/asyncore.rst
@@ -208,7 +208,8 @@
    .. method:: recv(buffer_size)
 
       Read at most *buffer_size* bytes from the socket's remote end-point.  An
-      empty string implies that the channel has been closed from the other end.
+      empty bytes object implies that the channel has been closed from the
+      other end.
 
 
    .. method:: listen(backlog)
diff --git a/Doc/library/chunk.rst b/Doc/library/chunk.rst
index ae0a221..50b6979 100644
--- a/Doc/library/chunk.rst
+++ b/Doc/library/chunk.rst
@@ -113,15 +113,15 @@
 
       Read at most *size* bytes from the chunk (less if the read hits the end of
       the chunk before obtaining *size* bytes).  If the *size* argument is
-      negative or omitted, read all data until the end of the chunk.  The bytes
-      are returned as a string object.  An empty string is returned when the end
-      of the chunk is encountered immediately.
+      negative or omitted, read all data until the end of the chunk.  An empty
+      bytes object is returned when the end of the chunk is encountered
+      immediately.
 
 
    .. method:: skip()
 
       Skip to the end of the chunk.  All further calls to :meth:`read` for the
-      chunk will return ``''``.  If you are not interested in the contents of
+      chunk will return ``b''``.  If you are not interested in the contents of
       the chunk, this method should be called so that the file points to the
       start of the next chunk.
 
diff --git a/Doc/library/xml.etree.elementtree.rst b/Doc/library/xml.etree.elementtree.rst
index cf65219..3f2dcbb 100644
--- a/Doc/library/xml.etree.elementtree.rst
+++ b/Doc/library/xml.etree.elementtree.rst
@@ -457,7 +457,7 @@
    is either ``"xml"``, ``"html"`` or ``"text"`` (default is ``"xml"``).
    Returns a list of (optionally) encoded strings containing the XML data.
    It does not guarantee any specific sequence, except that
-   ``"".join(tostringlist(element)) == tostring(element)``.
+   ``b"".join(tostringlist(element)) == tostring(element)``.
 
    .. versionadded:: 3.2
 
diff --git a/Doc/library/zlib.rst b/Doc/library/zlib.rst
index d9a29a8..b178fe1 100644
--- a/Doc/library/zlib.rst
+++ b/Doc/library/zlib.rst
@@ -197,7 +197,7 @@
 .. attribute:: Decompress.unused_data
 
    A bytes object which contains any bytes past the end of the compressed data. That is,
-   this remains ``""`` until the last byte that contains compression data is
+   this remains ``b""`` until the last byte that contains compression data is
    available.  If the whole bytestring turned out to contain compressed data, this is
    ``b""``, an empty bytes object.
 
