Printing UTF-8 mail to terminal
Loris Bennett
loris.bennett at fu-berlin.de
Mon Nov 4 05:48:15 EST 2024
Inada Naoki <songofacandy at gmail.com> writes:
> 2024年11月2日(土) 0:36 Loris Bennett via Python-list <python-list at python.org>:
>
>> Left Right <olegsivokon at gmail.com> writes:
>>
>> > There's quite a lot of misuse of terminology around terminal / console
>> > / shell. Please, correct me if I'm wrong, but it looks like you are
>> > printing that on MS Windows, right? MS Windows doesn't have or use
>> > terminals (that's more of a Unix-related concept). And, by "terminal"
>> > I mean terminal emulator (i.e. a program that emulates the behavior of
>> > a physical terminal). You can, of course, find some terminal programs
>> > for windows (eg. mintty), but I doubt that that's what you are dealing
>> > with.
>> >
>> > What MS Windows users usually end up using is the console. If you
>> > run, eg. cmd.exe, it will create a process that displays a graphical
>> > console. The console uses an encoding scheme to represent the text
>> > output. I believe that the default on MS Windows is to use some
>> > single-byte encoding. This answer from SE family site tells you how to
>> > set the console encoding to UTF-8 permanently:
>> >
>> https://superuser.com/questions/269818/change-default-code-page-of-windows-console-to-utf-8
>> > , which, I believe, will solve your problem with how the text is
>> > displayed.
>>
>> I'm not using MS Windows. I am using a Gnome terminal on Debian 12
>> locally and connecting via SSH to a AlmaLinux 8 server, where I start a
>> tmux session.
>>
>> > On Thu, Oct 31, 2024 at 5:19 PM Loris Bennett via Python-list
>> > <python-list at python.org> wrote:
>> >>
>> >> Hi,
>> >>
>> >> I have a command-line program which creates an email containing German
>> >> umlauts. On receiving the mail, my mail client displays the subject and
>> >> body correctly:
>> >>
>> >> Subject: Übung
>> >>
>> >> Sehr geehrter Herr Dr. Bennett,
>> >>
>> >> Dies ist eine Übung.
>> >>
>> >> So far, so good. However, when I use the --verbose option to print
>> >> the mail to the terminal via
>> >>
>> >> if args.verbose:
>> >> print(mail)
>> >>
>> >> I get:
>> >>
>> >> Subject: Übungsbetreff
>> >>
>> >> Sehr geehrter Herr Dr. Bennett,
>> >>
>> >> Dies ist eine =C3=9Cbung.
>> >>
>> >> What do I need to do to prevent the body from getting mangled?
>> >>
>> >> I seem to remember that I had issues in the past with a Perl version of
>> >> a similar program. As far as I recall there was an issue with fact the
>> >> greeting is generated by querying a server, whereas the body is being
>> >> read from a file, which lead to oddities when the two bits were
>> >> concatenated. But that might just have been a Perl thing.
>> >>
>
> Try PYTHONUTF8=1 envver.
>
This does not seem to affect the way the email body is printed.
Cheers,
Loris
--
This signature is currently under constuction.
More information about the Python-list
mailing list