Я думаю, что проще и понятнее сделать это более простым способом, используя непосредственное представление в юникоде os 'ü' лучше, чем unichr (252).
>>> s = u'über'
>>> s.replace(u'ü', 'ue')
u'ueber'
Нет необходимости использовать repr, так как это выведет «представление Python» строки, вам просто нужно представить читаемую строку.
Вам также необходимо включить следующую строку в начале файла .py, если он еще не существует, чтобы сообщить кодировку файла
#-*- coding: UTF-8 -*-
Добавлено: Конечно, заявленная кодировка должна совпадать с кодировкой файла. Пожалуйста, проверьте это, поскольку могут быть некоторые проблемы (у меня были проблемы с Eclipse в Windows, например, так как он записывает файлы по умолчанию как cp1252. Также это должна быть та же самая кодировка системы, которая может быть utf-8, или латинская -1 или др.
Кроме того, не используйте str
в качестве определения переменной, так как она является частью библиотеки Python. У вас могут возникнуть проблемы позже.
(я пытаюсь на Python 2.6, я думаю, в Python 2.3 результат тот же)