Имя: Пароль:
1C
1С v8
кириллица на ftp
,
0 Amig0_0
 
06.11.24
19:58
Доброго времени суток, товарищи!
Может кто добрый подскажет как решить следующую проблему?

Объектом FTPСоединение сохраняли .pdf-файлы на ftp, который долгое время был на винде(не уверен, но думаю на винде). Настраивали выгрузку давным-давно до меня. Я подключился, когда появилась проблема: наименования файлов стали отображаться в испорченной кодировке.

Первым делам написал админам. Говорят перевели сервак на СентОС. Попросил эту папку перевести из free в utf8 (т.к. по идее это стоковый формат наименований для 8.3) - не помогло.

Проблема 100% на стороне ftp, т.к. при сохранении этого файла локально с кодировкой всё ок. На просторах интернета встречаются подобные случаи. Если речь о Текстовом документе, у нас есть возможность указать кодировку

(прим: тхтфайл.Записать(имяФайла,ТипФайлаТабличногоДокумента.ANSITXT);)

однако в случае с pdf, у метода Записать, нет такой возможности.

Так же среди советов часто рекомендуют избавиться от Кириллицы, но для меня это прям последний вариант, т.к. по наименованиям эти файлы мы ищем с сайта.

Реализация (сокращенно) выглядит так:

Соединение = Новый FTPСоединение(...)
ДанныеФайла = СтрФайлХранилище.ФайлХранилище.Получить();
ИмяВременногоФайла = КаталогВременныхФайлов() + СокрЛП(Новый УникальныйИдентификатор) + ".tmp";
ДанныеФайла.Записать(ИмяВременногоФайла);
ИмяФайлаFTPЗаписи = КаталогНаСервере + ТекИмяФайла;
FTPСоединение.Записать(ИмяВременногоФайла, ИмяФайлаFTPЗаписи);
УдалитьФайлы(ИмяВременногоФайла);	


Если кто сталкивался и знает что можно предпринять, буду сильно благодарен!

Заранее спасибо!
1 big
 
06.11.24
18:46
У линуксоидов же имеется многомиллионное сообщество единомышленников, которые с удовольствием помогают всем вновь прибывшим сторонникам. Неужели никто не откликнулся???
2 Amig0_0
 
06.11.24
19:57
(1) Ну, скажем так, помощи извне организации я еще не просил)) Тут вот впервые спросил
3 arsik
 
гуру
06.11.24
20:37
Ну посмотрите расширенные логи FTP сервера. Скорее всего и в настройках там что то есть такое.
https://www.server-world.info/en/note?os=CentOS_7&p=ftp&f=1
utf8_filesystem=YES - наверно так нужно
4 Garykom
 
гуру
06.11.24
23:38
(0) использовать транслитерацию имен файлов
рядом с каждым файлом класть тот же файл в транслите .rutxt или .ruinfo
внутри которого кириллическое изначальное имя

ЗЫ
Не забыть про РеГиСтРоЗаВиСиМоСтЬ в линуксе
5 Garykom
 
гуру
06.11.24
23:42
(4)+ вместо транслита можно использовать https://en.wikipedia.org/wiki/Percent-encoding
6 Мультук
 
гуру
07.11.24
09:02
(0)

>> Если речь о Текстовом документе, у нас есть возможность указать кодировку
>> (прим: тхтфайл.Записать(имяФайла,ТипФайлаТабличногоДокумента.ANSITXT);)

Если почитать внимательно, то это кодировка НЕ имени файла, а содержимого.
К вашей проблему вообще никакого отношения не имеет.

Вариантов решения ровно два
1) Если админы подчиняются вашему ген.диру (или другому большому начальнику), то либо они делают, либо чётко объясняют почему раньше работало, а теперь не работает, и не будет работать "как раньше" никогда.

2) Если админы не в состоянии решить вашу проблему (у них лапки, они совсем внешние и т.п.),
то наверное стоит поменять транспорт файлов.

http ? флешки, почтовые собаки ?

или всё в одной сети и достаточно шары (share) ?
7 Amig0_0
 
11.11.24
20:02
(3) (4) (6) Всем спасибо за участие. грузанул админов линукса, пока разбираются. а сегодня провел странный эксперимент:)

стандартной выгрузкой сохранил файл на серверную папку, а потом ЭТОТ же файл этой же выгрузкой , методом описанным выше , сохранил на ФТП. В папку сохранился корректно, на фтп - коряво...

после  этого я руками скопировал файл с корректной кодировкой на фтп и..... он перенесся корректно!

скрин:

https://disk.yandex.by/i/C0E0_mZU1EljAw
8 Garykom
 
гуру
11.11.24
20:53
(7)
FTPСоединение.Записать(ИмяВременногоФайла, ИмяФайлаFTPЗаписи);

Скорее всего 1С не понимает кодировку файловой системы ftp сервера
И с переданным ИмяФайлаFTPЗаписи происходит хрень

А когда ручками закидывал - воспользовался внешним относительно 1С ftp-клиентом

И плиз не путай кодировку содержимого файла и пути/наименования файла (адреса ресурса) в файловой системе
9 Amig0_0
 
12.11.24
09:35
(8) да копировал ТоталКомандером.
Да, справедливо, речь я веду ИМЕННО про кодировку наименования файла
10 Garykom
 
гуру
11.11.24
22:03
ИмяФайлаFTPЗаписи = КаталогНаСервере + ТекИмяФайла;

попробовать подобрать для ИмяФайлаFTPЗаписи подходящую под ftp-сервер кодировку
11 Amig0_0
 
12.11.24
09:35
(10) ты имеешь в виду избавиться от кириллицы?
12 Garykom
 
гуру
12.11.24
09:34
(11) нет, подобрать кодировку при которой кириллица не портится
13 Fedor-1971
 
12.11.24
09:49
(0) чисто предположение, а если так:
ИмяФайлаFTPЗаписи = XMLСтрока(КаталогНаСервере + ТекИмяФайла); - по идее, строка должна получиться в UTF8
14 Garykom
 
гуру
12.11.24
09:53
(13) не факт что UTF8
может надо
Функция ПерекодироватьСтроку(Значение, ИсхКодировка, КонКодировка)
    БуферДанных = ПолучитьБуферДвоичныхДанныхИзСтроки(Значение, ИсхКодировка);
    Возврат ПолучитьСтрокуИзБуфераДвоичныхДанных(БуферДанных, КонКодировка);
КонецФункции
15 eklmn
 
гуру
12.11.24
11:19
Настроек кодовой страницы для FTP соединения в 1С нет, поэтому используй сторонние программы. Или самый сложный вариант, прогнуть админов чтобы настроили сервер как надо.
16 Amig0_0
 
12.11.24
13:54
(15) да, они падают на мороз, мол все настроено корректно...
мол установили в настройках сервера FileSystemCharset UTF-8 ClientChareset UTF-8 и теперь все должно быть ок, но результат тот же.
(13) (14) не прокатило ни то ни другое.
17 Garykom
 
гуру
12.11.24
14:00
(16) https://www.ghisler.ch/board/viewtopic.php?t=78174
суть что скорее всего настройки ftp-клиента 1С, ftp-сервера и файловой системы где ftp-сервер не совпадают
не уверен что ftp-клиент 1С умеет нечто отличное от ANSI
18 Garykom
 
гуру
12.11.24
14:02
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший