Your local settings are incompatible
LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8
That is, LANGUAGE does not use UTF-8, while other settings do this.
This may be part of the problem.
In addition, some terminals implement the iutf8 parameter for stty . This tells the terminal driver how to adjust the cursor position for multi-byte characters (UTF-8). You can check if stty -a -iutf8 (the function is disabled) and enable it if it is not, like
stty -a stty iutf8
When a function is available, the terminal driver knows that it must consider whether UTF-8 text is used (and may have several bytes per column). If this is not the case, it will consider each byte as a column, and when erasing the "last" character, it can do something like this:
backspace space space
creating the effect shown above.
Finally, it would be nice to know the terminal used. For example, rxvt does not support UTF-8; xterm can be configured with / without UTF-8. The value of TERM is largely irrelevant, as your shell probably ignores it in favor of inline behavior.
source share