◐ Shell
clean mode source ↗

Message 97334 - Python tracker

On Py2.x u'%c' % char returns the wrong result if char is in range '\x80'-'\xFF':
>>> u'%c' % '\x7f'
u'\x7f'  # correct
>>> u'%c' % '\x80'
u'\uff80'  # broken
>>> u'%c' % '\xFF'
u'\uffff'  # broken

This is what happens whit %s and 0x80:
>>> u'%s' % '\x80'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 0: ordinal
not in range(128)
>>> u'%c' % 0x80
u'\x80'

u'%c' % '\x80' should raise the same error raised by u'%s' % '\x80'.