Menu

#35 Диалоги открытия/сохранения файлов, иероглифы

Accepted
nobody
None
Medium
Defect
2019-03-04
2013-11-02
Anonymous
No

"Файл" -> "Открыть..." и "Файл" -> "Сохранить как..." русские папки и файлы иероглифами при выходе из каталога $HOME/fp-ide-ru.

Discussion

  • Anonymous

    Anonymous - 2013-11-02

    "Файл" -> "Сменить директорию...", "Запуск" -> "Директория запуска...", "Справка" -> "Файлы..." (то есть любой выход во внешнюю файловую систему linux) такая же проблема.
    Кодировка файловой системы в linux - UTF8, а в IDE - CP866.
    Можно запретить в этих диалогах выход из рабочей директории $HOME/fp-ide-ru как вариант решения проблемы, но это решит лишь проблему диалогов открытия/сохранения файлов, в том числе в справке.
    В общем, надо думать.

     

    Last edit: AlexL 2015-09-27
  • Anonymous

    Anonymous - 2013-11-07

    Такая же проблема кодировок и с оригинальным fp, и с fp-ide-en ( https://sourceforge.net/p/fp-ide-en/tickets/3/ ). Ее можно решить только полным переходом на UTF-8.

     

    Last edit: AlexL 2018-12-24
  • Skvoznjak

    Skvoznjak - 2019-03-02

    Да нет, проблема с русскими кодировками (IBM866 и русские буквы UTF-8) в самом редакторе более-менее решена http://freepascal.ru/forum/viewtopic.php?f=10&t=5318&start=225#p127754 Просто в иде диалоги привинчены "сбоку" и если после патчинга окна редактора изменения в диалогах не появились, то это значит, что нужно искать в коде реализации этих диалогов и патчить ещё и их персонально. В принципе, в патченной версии абракадабра в файловых диалогах работе не мешает.

     
  • Skvoznjak

    Skvoznjak - 2019-03-02

    Только что проверил, у меня русские буквы в линуксовых файловых диалогах работают. [URL=https://fastpic.ru/][IMG]https://i109.fastpic.ru/big/2019/0302/af/5b8e31ee7dd01b1dcf7ba849e5feafaf.png[/IMG][/URL] Даже файлы с битыми utf-8 символами можно открыть и сохранить. Сам не ожидал что это работает:)))) Вопрос в том, что Алексу этот патч раньше не нравился, у него в редакторе используется более простая версия. Наверните патчи на "голую" иде и сравните. Первый устанавливает перекодировки, второй - кодировку по умолчанию. Перевод названий используется тот, что сделал Алекс.

     
  • Skvoznjak

    Skvoznjak - 2019-03-02

    И второй патч, ставящийся поверх первого, меняющий кодировку по умолчанию.

     
    • AlexL

      AlexL - 2019-03-02

      Эти патчи никак не применимы к пакету. Надо исходить из того, что уже есть
      в пакете и делать новый патч на отображение utf8 в ibm866.

       
  • Skvoznjak

    Skvoznjak - 2019-03-03

    Надо смотреть что у тебя есть, думать как всобачить то, чего нет... А тут и делов то, взять первый патч, поставить по умолчанию четвёртый пункт меню (значение переменной по умолчанию поменять kombinacija_perekodirovanija: Byte=3;), выбросить рисовку окошка выбора кодировок и сохранение в конфиге выбранной кодировки. То есть "огражданить" патч выбросив из него вкусняшки в видимой части.

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

    Всё твоё техзадание, это один из режимов моего патча. тем более что у меня файл video не вставляется старый в пакет, а патчится системный.

    Я сам удивляюсь почему этот патч нормально заработал с файловыми диалогами, буд-то кто-то подогнал релиз паскаля под него:))) А может я сам сделал это в патче и забыл. Не помню чтобы делал.

     

    Last edit: Skvoznjak 2019-03-03
    • AlexL

      AlexL - 2019-03-03

      Нет, те патчи полностью непригодны.

       
  • Skvoznjak

    Skvoznjak - 2019-03-03

    У меня это всё работает и полностью пригодно. Следовательно в этой сборке всё в порядке - корябулы вместо русских букв это не баг, а приведение кода к феншую.

     
    • AlexL

      AlexL - 2019-03-03

      Для пакета какой он есть в Магее, не пригодно. Там никакие
      перекодирования не надо, а чётко задано, что внешняя кодировка utf8, а
      внутренняя CP866. Надо исходить из этого. Соответственно, чтобы убрать
      кракозябры надо utf8 перекодировать в cp866.

       
  • Skvoznjak

    Skvoznjak - 2019-03-04

    Да ну? Расскажи мне, как внешняя кодировка превратится во внутреннюю без перекодирования. У меня и перекодируется, с сохранением количества байтов. Это нужно в том случае, если придётся открывать файл созданный например в лазарусе, с utf8 в комментариях и при этом различать в какой кодировке что написано чтобы не портить исходники. Если исходник перекодировать без сохранения количества байтов, то возникает цирк, потому что иде расчитано на работу с байтами. Файловые диалоги это частный случай. Если там извратиться, то можно перекодировать без стрелочек и изменить количество байтов, вот только длинных пробелов и всяких странных кавычек с ударениями и всякой хренью в cp866 нет и нормально их перекодировать нельзя. А заменять всё не перекодируемое мусором типа ? и портить этим информацию, это не наш метод. И тогда получается, что все лишние символы всё равно надо изображать побайтно. Так зачем тогда цирк с изменением количества байтов устраивать.

    В общем в магее придуманы сложности, теперь думай как вписаться в такие рамки, потому что возникает ещё одна сложность: если ты создашь файл с именем в cp866, то уже другие программы увидят кракозябры.

     

    Last edit: Skvoznjak 2019-03-04

Log in to post a comment.