HTTP is a hypertext transfer protocol. Therefore, to understand this literally, it is intended to convey text.
Yes, text transmission. Not necessarily plain text , but all text. This does not mean that your text should be readable by a person, just a computer.
And I used a sniffer tool to monitor wired traffic. All ASCII characters are transmitted.
Your sniffer tool knows that you are human, so it will not just present you 0 and 1. It will convert everything that falls into ASCII characters to make it readable. All cable communications are binary. The ASCII view is just for you.
So, I think we need to convert everything we want to download to characters before passing over HTTP
No, absolutely not. Again, text is not necessarily plain text.
I always think that TCP can transmit any data, [...]
You are right here. TCP transfers all data, but at a completely different level. To understand this, let's look at the OSI model :

When you send something over the network, your data goes through all the different levels. First, the application level. Here we have HTTP and several others. Everything that you send via HTTP goes through layers, right up to the presentation and right up to the physical layer.
So, when you say that TCP transmits data, then you are right (HTTP can work on other transport protocols, such as UDP, but this is rare), but TCP transmits all your data, whether you upload a file from a web server, copy a shared folder on the local network between computers or send an email.