RX is the receiving side of the serial interface and the esp8266 receiving everything great.
just to make sure I did what you suggested and it did not help.
I assume the problem is with the TX of the esp8266, he is sending data in 3.3v and the arduino expects 5v.
this might be one problem.
I tried to use pull up resistor but it did not help.
Another problem is my esp works in 115200 baud rate, maybe the arduino is not fast enough to handle this ?
Software serial will choke sometimes at 115200 bauds
Also it has only a 64 byte buffer that can quickly be overflown at that speed (which you can check with the overflow call)
If you don't need to use that speed, would suggest changing to 9600 or as low as you feel acceptable.
In a recent project where I needed high speed and for convenience the hardware serial connected to a computer - I duplicated the library files into my own project and changed the name of the class throughout the file and used a 256 byte buffer. Things worked fine then but obviously that is quite a tax on your memory.
An alternative is to use a hardware serial (mega boards have 4) to not run into the issue or plug and unplug for programming and use the software serial to talk back to your computer instead of the ESP
Also don't wait for 1 second after sending your comment for listening back to your ESP - the longer you wait, the higher the risk of overflowing the 64 byte buffer as you don't empty it when things come in.
What I do is actually put at the end of the main loop 2 statements:
1 reading whatever is on hardware serial and sending it to software serial and 1 reading whatever is pending on software serial and sending it to hardware Serial
(But if you have letters REPLACED by others and none missing then that indeed seems to indicate some bits received at 0 instead of 1 in the character bytes and so could be a 3.3 to 5v issue(although 3.3V is read as a 1 on an arduino)
Is your ESP powered separately from the arduino and do you have enough power to keep the ESP happy?it is pretty hungry when doing wifi transmits and pulls lots of current)
Also - If you have an oscilloscope you could plug it to the Tx pin of the ESP and see exactly what is sent back 1 and 0 are easy to spot record the sequence and see the levels
AT+IPR has been deprecated quite a while ago - should not brick the device though, just fail and keep it to the old baud rate (so if you tried to switch baud rate after then there was no chance you could reach the device).
indeed AT+UART_DEF is the new way of doing it. it's saved in Flash so you do that only once.