All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: "罗勇刚(Yonggang Luo)" <luoyonggang@gmail.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"QEMU Developers" <qemu-devel@nongnu.org>,
	"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Cleber Rosa" <crosa@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>
Subject: Re: [PATCH] decodetree: Open files with encoding='utf-8'
Date: Fri, 8 Jan 2021 11:43:55 -0500	[thread overview]
Message-ID: <20210108164355.GA54056@habkost.net> (raw)
In-Reply-To: <CAE2XoE-sDrYDtKjqRQ_+=7XNmnFX3_BoJadULoLj-X3oMDaYbA@mail.gmail.com>

On Sat, Jan 09, 2021 at 12:13:31AM +0800, 罗勇刚(Yonggang Luo) wrote:
> On Sat, Jan 9, 2021 at 12:05 AM Peter Maydell <peter.maydell@linaro.org>
> wrote:
> >
> > On Fri, 8 Jan 2021 at 15:16, Philippe Mathieu-Daudé <f4bug@amsat.org>
> wrote:
> > >
> > > When decodetree.py was added in commit 568ae7efae7, QEMU was
> > > using Python 2 which happily reads UTF-8 files in text mode.
> > > Python 3 requires either UTF-8 locale or an explicit encoding
> > > passed to open(). Now that Python 3 is required, explicit
> > > UTF-8 encoding for decodetree sources.
> > >
> > > This fixes:
> > >
> > >   $ /usr/bin/python3 scripts/decodetree.py test.decode
> > >   Traceback (most recent call last):
> > >     File "scripts/decodetree.py", line 1397, in <module>
> > >       main()
> > >     File "scripts/decodetree.py", line 1308, in main
> > >       parse_file(f, toppat)
> > >     File "scripts/decodetree.py", line 994, in parse_file
> > >       for line in f:
> > >     File "/usr/lib/python3.6/encodings/ascii.py", line 26, in decode
> > >       return codecs.ascii_decode(input, self.errors)[0]
> > >   UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position
> 80:
> > >   ordinal not in range(128)
> > >
> > > Reported-by: Peter Maydell <peter.maydell@linaro.org>
> > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> > > ---
> > >  scripts/decodetree.py | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/scripts/decodetree.py b/scripts/decodetree.py
> > > index 47aa9caf6d1..fa40903cff1 100644
> > > --- a/scripts/decodetree.py
> > > +++ b/scripts/decodetree.py
> > > @@ -1304,7 +1304,7 @@ def main():
> > >
> > >      for filename in args:
> > >          input_file = filename
> > > -        f = open(filename, 'r')
> > > +        f = open(filename, 'r', encoding='utf-8')
> > >          parse_file(f, toppat)
> > >          f.close()
> >
> > Should we also be opening the output file explicitly as
> > utf-8 ? (How do we say "write to sys.stdout as utf-8" for
> > the case where we're doing that?)
> 
> Can be done with
> ```
>         sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf8",
> errors="ignore")
> ```

In the specific case of decodetree, just assigning this to
`output_fd` is enough, and less hacky than overwriting
`sys.stdout`.

-- 
Eduardo



  reply	other threads:[~2021-01-08 16:45 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-08 15:16 [PATCH] decodetree: Open files with encoding='utf-8' Philippe Mathieu-Daudé
2021-01-08 15:25 ` 罗勇刚(Yonggang Luo)
2021-01-08 15:38 ` Peter Maydell
2021-01-08 16:13   ` 罗勇刚(Yonggang Luo)
2021-01-08 16:43     ` Eduardo Habkost [this message]
2021-01-08 16:44   ` Philippe Mathieu-Daudé
2021-01-08 17:14     ` Peter Maydell
2021-01-08 18:02       ` Philippe Mathieu-Daudé
2021-01-08 22:51 ` Daniele Buono
2021-01-12 21:11   ` Eduardo Habkost
2021-01-12 23:35     ` John Snow
2021-01-12 23:44       ` Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210108164355.GA54056@habkost.net \
    --to=ehabkost@redhat.com \
    --cc=crosa@redhat.com \
    --cc=f4bug@amsat.org \
    --cc=luoyonggang@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.