On Tue, May 21, 2013 at 11:34:16AM -0400, Tomoki Sekiyama wrote: > qemu-ga in Windows may return error message with multibyte characters > when the guest OS language is set to other than English. To display such > messages correctly, this encodes the message based on the locale settings. > > Signed-off-by: Tomoki Sekiyama <tomoki.sekiy...@hds.com> > --- > QMP/qmp.py | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/QMP/qmp.py b/QMP/qmp.py > index c551df1..ee21819 100644 > --- a/QMP/qmp.py > +++ b/QMP/qmp.py > @@ -11,6 +11,7 @@ > import json > import errno > import socket > +import locale > > class QMPError(Exception): > pass > @@ -133,7 +134,8 @@ class QEMUMonitorProtocol: > def command(self, cmd, **kwds): > ret = self.cmd(cmd, kwds) > if ret.has_key('error'): > - raise Exception(ret['error']['desc']) > + enc = locale.getpreferredencoding() > + raise Exception(ret['error']['desc'].encode(enc))
You should not need to explicitly encode the error descriptor. The error description should be UTF-8 on the wire and a Unicode Python string in this script. I think the real problem is: 1. Guest qga is writing strings in local encoding onto the wire. or 2. qmp.py isn't UTF-8-decoding strings received over the wire. Either or both bugs could be present. Once they are fixed you shouldn't see encoding problems. Stefan