It seems so. I read IUTF8, but the document only said it allows you to handle input as UTF-8 when doing line-editing.

But what about output? If you use a GUI Terminal, it usually allows you to change the encoding to render bytes in the pty's output buffer, but what about kernel-implemented tty?

Does Linux always render bytes in tty's output buffer using UTF-8?


"Linux" as such, does not do this. Applications (including, but not limited to, terminal emulators) do that—or do not.

The Linux console terminal is a terminal emulator which may/may not interpret UTF-8. See the console_codes(4) manual page for more information. That should list the controls for switching the output character set, e.g.,

   ESC %              Start sequence selecting character set                
   ESC % @               Select default (ISO 646 / ISO 8859-1)              
   ESC % G               Select UTF-8                                       
   ESC % 8               Select UTF-8 (obsolete) 

but seeing that the final comment on the page corresponds to this change in 2006, suspect that the conversion to web format lost some text. Another site gives a more complete representation (though that site also has issues as mentioned here).

If you really want to read the manual page, your local computer likely does a better job than either...

You can turn UTF-8 mode off/on, using the sequences ending in @ or G, respectively. I use this script occasionally to do that:

# send character-string to enable UTF-8 mode
if test ".$1" = ".off" ; then
        printf '\033%%@'
        printf '\033%%G'

(and having commented on that before, someone reminds that there is a script to do this, which is a little older than my script).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.