Index: Objects/unicodeobject.c =================================================================== --- Objects/unicodeobject.c (révision 76759) +++ Objects/unicodeobject.c (copie de travail) @@ -8440,7 +8440,7 @@ else if (PyString_Check(v)) { if (PyString_GET_SIZE(v) != 1) goto onError; - buf[0] = (Py_UNICODE)PyString_AS_STRING(v)[0]; + buf[0] = (Py_UNICODE)(unsigned char)PyString_AS_STRING(v)[0]; } else { Index: Lib/test/test_unicode.py =================================================================== --- Lib/test/test_unicode.py (révision 76759) +++ Lib/test/test_unicode.py (copie de travail) @@ -415,6 +415,8 @@ return u'\u1234' self.assertEqual('%s' % Wrapper(), u'\u1234') + self.assertEqual(u'%c' % '\x80', u'\x80') + @test_support.run_with_locale('LC_ALL', 'de_DE', 'fr_FR') def test_format_float(self): # should not format with a comma, but always with C locale