Кодировка в имени файлов полученных с сервера

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 944
Благодарностей
4 353
Баллы
113
Получаю по FTP список файлов с кириллическими именами.
Получаю в списке Выбор РїРѕСЃСѓРдениР.html
Само собой файлы в UTF-8 и на сервере нормально читаются.
Как можно решить проблему?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
попробуй создай список заранее в utf-8 чтобы не перекодировать
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 944
Благодарностей
4 353
Баллы
113
попробуй создай список заранее в utf-8 чтобы не перекодировать
Ты имеешь в виду привязать txt файл к списку?
Я, конечно, попробовал, но это бесполезно. Имена файлов попадают в список измененные.
Видимо сам метод FTP в Зенно такой.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Ты имеешь в виду привязать txt файл к списку?
Я, конечно, попробовал, но это бесполезно. Имена файлов попадают в список измененные.
Видимо сам метод FTP в Зенно такой.
ну кодировка виндовская
а ты в зеновский список загружаешь ?

попробуй создать пустой в utf-8 и в него полученое
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
а вообще вот так попробуй закинуть сразу в файл
File.WriteAllText("C:\\test.txt", данные, System.Text.Encoding.UTF8-);
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 944
Благодарностей
4 353
Баллы
113
Ещё раз. На сервере папка, в ней куча файлов HTML с русскими именами. Как мне получить список имен этих файлов?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
попробуй так, посмотри в какой кодировке выведет, если каракули то подбирай кодировку

C#:
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://127.0.0.1/");
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
project.SendInfoToLog("Содержимое сервера:");
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);

project.SendInfoToLog(reader.ReadToEnd());
reader.Close();
responseStream.Close();
response.Close();
 
  • Спасибо
Реакции: Astraport

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 944
Благодарностей
4 353
Баллы
113
попробуй так, посмотри в какой кодировке выведет, если каракули то подбирай кодировку
Спасибо, рабочий метод, только строку выводит в таком виде:
Код:
-rw-r--r--    1 0        0            8669 Feb 14 11:59 Экспертиза посудомоечных машин html
Нужно только имя файла. Пробую в таблицу запихнуть с разделителями табами, не получается.
Что ещё можно попробовать? Парсить регулярками вряд ли получится.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Спасибо, рабочий метод, только строку выводит в таком виде:
Код:
-rw-r--r--    1 0        0            8669 Feb 14 11:59 Экспертиза посудомоечных машин html
Нужно только имя файла. Пробую в таблицу запихнуть с разделителями табами, не получается.
Что ещё можно попробовать? Парсить регулярками вряд ли получится.
я уже давно с ftp не работал и шаблон не могу найти где всё по ftp было
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 944
Благодарностей
4 353
Баллы
113
Зеновскими методами по ФТП работать бесполезно. Твой норм, но вот этот StreamReader выдает много лишнего.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Зеновскими методами по ФТП работать бесполезно. Твой норм, но вот этот StreamReader выдает много лишнего.
что то в снипетах нашёл какую то колбасень ))) попробуй

C#:
var sourcelist = project.Lists["SourceList"];

FtpWebRequest reqFTP;
string[] downloadFiles;
StringBuilder result = new StringBuilder();

try
{
    reqFTP = (FtpWebRequest)WebRequest.Create(new Uri("ftp://127.0.0.1/"));
    reqFTP.UseBinary = true;
    //reqFTP.Credentials = new NetworkCredential("login", "password");
    reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
    WebResponse response = reqFTP.GetResponse();
    StreamReader reader = new StreamReader(response
        .GetResponseStream());
   
    string line = reader.ReadLine();
    while (line != null)
    {
        result.Append(line);
        result.Append("\n");
        line = reader.ReadLine();
    }
    result.Remove(result.ToString().LastIndexOf('\n'), 1);
    reader.Close();
    response.Close();
    sourcelist.Add(result.ToString());
}
catch (Exception ex)
{
    project.SendInfoToLog("<< BAD >>", "        ", true);
    downloadFiles = null;
    return string.Join("\n", downloadFiles);
}
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 944
Благодарностей
4 353
Баллы
113
Всё нашёл решение из твоего второго кода: WebRequestMethods.Ftp.ListDirectory вместо ListDirectoryDetails.
Спасибо!
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
  • Спасибо
Реакции: Astraport

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)