Index: Objects/unicodeobject.c =================================================================== --- Objects/unicodeobject.c (revision 58389) +++ Objects/unicodeobject.c (working copy) @@ -6191,16 +6191,6 @@ if (PyUnicode_Check(left) && PyUnicode_Check(right)) return unicode_compare((PyUnicodeObject *)left, (PyUnicodeObject *)right); - if ((PyString_Check(left) && PyUnicode_Check(right)) || - (PyUnicode_Check(left) && PyString_Check(right))) { - if (PyUnicode_Check(left)) - left = _PyUnicode_AsDefaultEncodedString(left, NULL); - if (PyUnicode_Check(right)) - right = _PyUnicode_AsDefaultEncodedString(right, NULL); - assert(PyString_Check(left)); - assert(PyString_Check(right)); - return PyObject_Compare(left, right); - } PyErr_Format(PyExc_TypeError, "Can't compare %.100s and %.100s", left->ob_type->tp_name, Index: Lib/test/test_unicode.py =================================================================== --- Lib/test/test_unicode.py (revision 58389) +++ Lib/test/test_unicode.py (working copy) @@ -200,6 +200,10 @@ self.checkequalnofix('one@two!three!', 'one!two!three!', 'replace', '!', '@', 1) self.assertRaises(TypeError, 'replace'.replace, "r", 42) + def test_str8_comparison(self): + self.assertEqual('abc' == str8('abc'), False) + self.assertEqual('abc' != str8('abc'), True) + def test_comparison(self): # Comparisons: self.assertEqual('abc', 'abc')