потому что это не
- и
+, а визуально похожие символы.
Код:
var
s: String;
begin
s:='http://pogoda.yandex.ru/тольятти/details/';
s:=UTF8Encode(s);
IdHTTP1.HandleRedirects:=True;
s:=IdHTTP1.Get(s);
// заменяем - на - :)
s:=StringReplace(s, Chr($e2)+Chr($88)+Chr($92), '-', [rfReplaceAll, rfIgnoreCase]);
s:=UTF8Decode(s);
Memo1.Text:=s;
end;