Index: _elementtree.c =================================================================== --- _elementtree.c (revision 73491) +++ _elementtree.c (working copy) @@ -1697,6 +1697,16 @@ return (PyObject*) self->last; } +const char * +str_encoding(const char *st) +{ + PyObject* dec; + + dec = PyUnicode_DecodeUTF8(st, strlen(st), "strict"); + dec = PyUnicode_AsLatin1String(dec); + return PyString_AsString(dec); +} + LOCAL(void) treebuilder_handle_namespace(TreeBuilderObject* self, int start, const char* prefix, const char *uri) @@ -1712,8 +1722,15 @@ if (!self->start_ns_event_obj) return; action = self->start_ns_event_obj; - /* FIXME: prefix and uri use utf-8 encoding! */ - parcel = Py_BuildValue("ss", (prefix) ? prefix : "", uri); + + /* These are utf-8 encoded. str_encoding is an ugly hack + so that cElementTree outputs the same as ElementTree + Issue 6266 + */ + parcel = Py_BuildValue("ss", + (prefix) ? str_encoding(prefix) : "", + str_encoding(uri)); + if (!parcel) return; Py_INCREF(action);