function IdFTPEnabledUTF8(IdFTP: TIdFTP): Boolean; begin Result := False; if Assigned(IdFTP) then begin if IdFTP.Connected then begin IdFTP.Quote('FEAT'); if IdFTP.IsExtSupported('UTF8') then begin case IdFTP.SendCmd('OPTS UTF8 ON') of 200, 220: begin IdFTP.DefStringEncoding := IndyTextEncoding_UTF8; Result := True; end; else begin if IdFTP.SendCmd('OPTS UTF-8 NLST') = 200 then begin IdFTP.DefStringEncoding := IndyTextEncoding_UTF8; Result := True; end; end; end; end; end; end; end; function GetFTPList(IdFTP: TIdFTP): Boolean; begin Result := False; if Assigned(IdFTP) then begin if IdFTP.DefStringEncoding = IndyTextEncoding_UTF8 then begin IdFTP.List(); end else begin IdFTP.List('', False); end; Result := True; end; end; 理论代码未进行UTF8的测试.
----------------------------------------------