LINUX.ORG.RU

Неверная кодировка имени файла

 , ,


0

1

Столкнулся с проблемой неверной кодировки файлов и не понимаю как решить. Есть сервер 1С на linux, также есть ftp сервер, который крутится на windows server 2019. Пользователь с ПК на windows 10 прикрепляет файлик в 1С, а 1С кладёт его на ftp сервер. в результате этого ломается кодировка файлов. Вариант установить на сервере utf 8 отпадает, т.к. ломаются другие вещи. Сталкивался кто нибудь? Нашёл на кибер форуме скрипт, который выполняет перекодировку имени файла из utf - 8 в cp 1251:

  function convert {
  param(
  [string]$from, [string]$to
                             )
  begin{
  $fenc = [text.encoding]::getencoding($from)
  $tenc = [text.encoding]::getencoding($to)
  }
  process{
  $a = $tenc.getbytes($)
  $fenc.getstring($a)
  }
   }
  $fld = ‘C:\Users\Desktop\srcDIR’ # корневой 
  каталог
  dir $fld -file -recurse|%{ren $.fullname ($_.name|convert 
  ‘utf-8’ ‘windows-1251’)}

Скрипт решил проблему, но, ломает кодировку при следующем прогоне. Подскажите пожалуйста пути решения, возможно кто - то сталкивался.

1С кладёт его на ftp сервер. в результате этого ломается кодировка файлов

Нет. Не ломается. ftp-серверу вообще плевать на кодировку, что прислали то и сохранил.

который выполняет перекодировку имени файла из utf - 8 в cp 1251

Зачем? Пусть лежит себе в utf8, чему это мешает то?

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от londonfan

Что именно ломается? У фтп нет кодировки. На твоём фтп лежат совершенно нормальные файлы с именами в утф8, а ломается она тогда, когда ты пытаешься их как 1251 читать.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)