Смена кодировки текстового файла: неоднозначности

Хотите говорить о Far и не знаете, куда обратиться?
Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Смена кодировки текстового файла: неоднозначности

Post by Max Rusov » Wed 14 Mar, 2012 13:20

Latest post of the previous page:

John Doe

Как то Вы непонятно сформулировали. Я бы сказал так:

Есть 2 пути:
1. Менять кодировку путем перечитывания файла (предварительно предложив сохранить изменения, если были)
2. Менять кодировку уже загруженного файла "на лету", как делает F8/ShiftF8

Второй способ был хорош в эпоху 1-го FAR'а. Сейчас, со зверинцем юникодных кодировок от него больше проблем чем пользы. Я бы предложил полностью перейти на 1-й способ, при этом снимутся все ограничения на переключение кодировок по F8/ShiftF8...

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 230 times

Re: Смена кодировки текстового файла: неоднозначности

Post by John Doe » Wed 14 Mar, 2012 13:30

Max Rusov wrote:Как то Вы непонятно сформулировали.
Да, перемудрил.
Согласен с вашими 2мя. Только дополню:
1. Менять кодировку путем перечитывания файла (предварительно предложив сохранить изменения, если были)
Если это будет делать фар, то уж он-то наверняка способен сделать это автоматически, не предлагая сохранения, но с возможностью отмены.

P.S.
2й путь тоже можно улучшать, только вряд ли игра стоит свеч.

P.P.S.
А возможно стоит сочетать оба подхода, оставив второй для однобайтных.
Но важно чтобы ньюансы были спрятаны от пользователя

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Смена кодировки текстового файла: неоднозначности

Post by Max Rusov » Wed 14 Mar, 2012 13:36

John Doe wrote:Если это будет делать фар, то уж он-то наверняка способен сделать это автоматически, не предлагая сохранения, но с возможностью отмены
Не понял, что Вы имеете ввиду, но сохранять файл неявно - очевидно нельзя, так что запрос - самое простое и правильное решение.

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 230 times

Re: Смена кодировки текстового файла: неоднозначности

Post by John Doe » Wed 14 Mar, 2012 13:39

"Автоматически" это значит перезагрузить редактор посредством выгрузки/загрузки временного файла, не более.
Исходный файл конечно не должен меняться.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Смена кодировки текстового файла: неоднозначности

Post by Max Rusov » Wed 14 Mar, 2012 13:47

John Doe wrote:"Автоматически" это значит перезагрузить редактор посредством выгрузки/загрузки временного файла, не более.
Нет, так не получится. Есть существенная разница:

1. Потерять изменения и перезагрузить исходный файл
2. Сохранить изменения (во временный файл?) и перезагрузить его.

Только пользователь может принять решение, что ему надо.

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 230 times

Re: Смена кодировки текстового файла: неоднозначности

Post by John Doe » Wed 14 Mar, 2012 13:58

Max Rusov wrote:Нет, так не получится.
Получится всё, вопрос лишь в том стоит ли овчинка выделки.
Терять изменения никак не годится, в идеале редактор перезагружается в новой кодировке, сохраняя прежний буфер undo, где даже сама смена кодовой страницы отменяема.

Это в идеале.

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

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Смена кодировки текстового файла: неоднозначности

Post by Max Rusov » Wed 14 Mar, 2012 14:02

Это невозможно. Если при открытии файла кодовая страница была выбрана неправильно, то сохранение такого файла приводит к невосполнимой потере информации (FAR об этом предупреждает даже). Так что молча перезагрузить не получится. Пользователь должен решить, что ему важнее - его изменения, или правильно загруженный файл.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Смена кодировки текстового файла: неоднозначности

Post by Max Rusov » Wed 14 Mar, 2012 14:04

John Doe wrote:А противном случае фар будет спрашивать о сохранении каждый раз, причём там где раньше всё было прозрачненько
Проблема надумана. Смена кодировки, после того как файл уже редактировали - скорее исключение. Обычно открываешь файл - видишь, что он не в той кодировке, меняешь, и только потом начинаешь редактировать...

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 230 times

Re: Смена кодировки текстового файла: неоднозначности

Post by John Doe » Wed 14 Mar, 2012 14:13

Max Rusov wrote:Если при открытии файла кодовая страница была выбрана неправильно, то сохранение такого файла приводит к невосполнимой потере информации (FAR об этом предупреждает даже).
Это не так: Я могу открыть файл как 866, а потом спокойно сменить на UTF-8
Если же я сразу выбрал страницу неправильно, и открытие в этой кодировке невозможно, то в идеале фар сразу должен предлагать подтвердить кодировку, или изменить её.
Сама логика тут предельно проста, и ничего из данных не потеряется (если я конечно сознательно не подтвержу деструктивное изменение).

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Смена кодировки текстового файла: неоднозначности

Post by Max Rusov » Wed 14 Mar, 2012 14:21

John Doe wrote:Это не так: Я могу открыть файл как 866, а потом спокойно сменить на UTF-8
А Вы попробуйте (на файле содержащем русский текст). Возникнет предупреждение о невозможности трансляции, и обратное преключение уже не приводит файл к исходному варианту - требуется перезагрузка.

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 230 times

Re: Смена кодировки текстового файла: неоднозначности

Post by John Doe » Wed 14 Mar, 2012 14:21

Max Rusov wrote:Проблема надумана [...]
Надумана - нет.
Не очень актуальна - возможно.

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 230 times

Re: Смена кодировки текстового файла: неоднозначности

Post by John Doe » Wed 14 Mar, 2012 14:27

Max Rusov wrote:
John Doe wrote:Это не так: Я могу открыть файл как 866, а потом спокойно сменить на UTF-8
А Вы попробуйте (на файле содержащем русский текст). Возникнет предупреждение о невозможности трансляции, и обратное преключение уже не приводит файл к исходному варианту - требуется перезагрузка.
А чего тут пробовать - я прекрасно понимаю о чём вы.
Но в вашем примере проблему представляет только переключение в UTF-8 и только если такое переключение ошибочно.
А в большинстве случаев никакой потери не произойдёт, даже при выборе неправильной кодировки.

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 230 times

Re: Смена кодировки текстового файла: неоднозначности

Post by John Doe » Wed 14 Mar, 2012 14:35

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

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

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 230 times

Re: Смена кодировки текстового файла: неоднозначности

Post by John Doe » Wed 14 Mar, 2012 15:22

Давайте подведём итоги.
Max Rusov предлагает любую смену кодовой страницы в редакторе производить переоткрывая редактор.
Плюсы:
  • Всегда будут доступны для выбора любые кодировки (до сих пор "расстрельная" тема)
  • Необратимая потеря данных будет исключена, дёшево и сердито
Минусы:
  • Невозможность произвести операцию пока изменения в редакторе не сохранены (объявим фичей)
  • Переоткрытие большого файла будет дольше
Как по мне, то достоинства перевешивают, так что я за.

2useven10
Posts: 3982
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 172 times

Re: Смена кодировки текстового файла: неоднозначности

Post by 2useven10 » Wed 14 Mar, 2012 16:11

imho: добавить опцию редактора 'Перечитать файл при смене кодировки' и если она включена, по Shift-F8 делать то, что сейчас делается по Shift-F4, но без имени файла (не меняется) и возможно с учётом любимых кодировок.
Last edited by 2useven10 on Wed 14 Mar, 2012 16:19, edited 1 time in total.

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 230 times

Re: Смена кодировки текстового файла: неоднозначности

Post by John Doe » Wed 14 Mar, 2012 16:17

"Опция" в виде макроса у нас и так есть. А хочется изжить вышеперечисленные проблемы как класс, раз и навсегда...

Denis
Posts: 1420
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 7 times
Been thanked: 2 times

Re: Смена кодировки текстового файла: неоднозначности

Post by Denis » Wed 14 Mar, 2012 16:20

Ну, и спрашивать про что делать с изменённым файлом.

Post Reply

Return to “Обсуждение Far Manager”