Эта строка не является допустимой последовательностью Юникода.Если вы возьмете байты и попытаетесь декодировать его, вы увидите ошибку:
>>> s = '/home/mysite/public_html/images/office-100-m\xe2\xb2.jpg'
>>> s.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 44-45: invalid continuation byte
Аналогично, если вы закодируете строку юникода, которая у вас есть вВаш вопрос, закодированные байты отличаются от того, что показано в ошибке.Это правильная версия этой строки в кодировке utf-8:
>>> u"office-100-m²-2.jpg".encode('utf-8')
'office-100-m\xc2\xb2-2.jpg'
Уведомление \xc2\xb2
против \xe2\xb2
.Я не уверен, что кодирует имя файла вашей файловой системы, но это не UTF-8.