UnicodeDecodeError: 'ascii' codec can't decode byte... errors on OS X

Martin Geisler martin at geisler.net
Tue Aug 20 22:04:56 UTC 2013


Matthias Pigulla <mp at webfactory.de> writes:

Hi Matthias,

> I often get the above mentioned errors from hg, even on simple command
> typos like shown in http://bpaste.net/show/mHiB5oIho06bGqAyrJ76/.

The traceback:

  mp at silverbook:~$ hg something
  hg: unbekannter Befehl 'something'
  Traceback (most recent call last):
    File "/opt/local/bin/hg", line 38, in <module>
      mercurial.dispatch.run()
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 28, in run
      sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 69, in dispatch
      ret = _runcatch(req)
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 162, in _runcatch
      commands.help_(ui, 'shortlist')
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/commands.py", line 3407, in help_
      text = help.help_(ui, name, **opts)
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/help.py", line 502, in help_
      rst.extend(helplist())
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/help.py", line 329, in helplist
      doc = gettext(doc)
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/i18n.py", line 42, in gettext
      u = u'\n\n'.join([p and t.ugettext(p) or '' for p in paragraphs])
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/gettext.py", line 404, in ugettext
      return unicode(message)
  UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 60: ordinal not in range(128)

The above error occurs if we try to translate an already translated
string, that is run a string through Gettext twice. The second time
triggers the error since the input string will (most likely) contain
non-ASCII characters ("Ä" in this case) which cannot be decoded with
Python's default encoding (ASCII).

I don't see how that error would happen here. The code in question is

            doc = e[0].__doc__
            if doc and 'DEPRECATED' in doc and not ui.verbose:
                continue
            doc = gettext(doc)

where e[0] is one of the functions in mercurial.commands. As far as I
know, we've never had an "Ä" in the docstring for a command function.

Which Mercurial version are you running? I tried to reproduce it with
Mercurial 2.{2,3,4,5,6,7} but the German translation worked fine with
those versions.

-- 
Martin Geisler
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.mercurial-scm.org/pipermail/mercurial/attachments/20130821/784aebc3/attachment.asc>


More information about the Mercurial mailing list