GTK+ работает строго с UTF-8: l.get_text().decode('utf-8')
Я работаю с PyGTK и в винде и в линухе, если учитывать эту особенность, то проблем не возникает.
Про второй вопрос не знаю. Не приходилось заниматься. Возможно в самой GTK+ есть функции для преобразования escaped (или как его там, quoted?) последовательности в нормальный текст.
По второму вопросу у меня так получилось:
>>> import urllib
>>> url = urllib.unquote('file:///N:/CPP/image_eng/img4test/%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B0%D1%8F%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0/4.JPG')
>>> url
'file:///N:/CPP/image_eng/img4test/\xd1\x80\xd1\x83\xd1\x81\xd1\x81\xd0\xba\xd0\xb0\xd1\x8f\xd0\xbf\xd0\xb0\xd0\xbf\xd0\xba\xd0\xb0/4.JPG'
>>> url.decode('utf-8')
u'file:///N:/CPP/image_eng/img4test/\u0440\u0443\u0441\u0441\u043a\u0430\u044f\u043f\u0430\u043f\u043a\u0430/4.JPG'
Кодировка UTF-8.
..bw