При переключении кодировки BOM появляется прямо в редакторе

Здесь можно сообщить о найденных багах в Far.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

При переключении кодировки BOM появляется прямо в редакторе

Post by John Doe »

Создал вот тикет на мантисе (#0001377), но его тут же без обсуждения закрыли, мол фича.
А хотелось бы немного обсудить.

Вкратце: в определённых ситуациях фар открывает юникодный (UTF-8) файл в однобайтной неюникодной кодировке.
Юзер, заметив оплошность, вручную (Shift-F8) переключает кодировку в UTF-8.
Проблема в том, что после этого в начало текста попадает BOM.
Это не всегда увидишь - в некоторых шрифтах он имеет нулевую ширину.

Я бы и незаметил, но при попытке сохранить (Shift-F2) файл в кодировке 866, фар выдал
После нажатия Show курсор остался в начале файла, причём Consolas не дал мне увидеть BOM.

Понятно, что такая фича у редактора - при смене кодировки файл не перечитывается.
Но всё равно считаю что тикет закрыт преждевременно.

Даже если при текущем дизайне редактора нецелесообразно фиксить "баг", не факт что в будущем дизайн не изменится.
(А с кодировками проблем сейчас хватает)

Либо возможно какое-нибудь альтернативное решение. Например, если при попытке открыть файл в однобайтной кодировке встречается BOM - фар может спросить пользователя а что с ним делать: Оставить/Удалить/Открыть в юникоде.


Собственно проблемка мелкая, и тему я создал больше для информации, ведь закрытый тикет вряд ли кто уже увидит.

P.S.
Непонятно зачем торопиться закрывать тикет, даже если нет намерения фиксить. Пусть себе повисит некоторое время - люди хоть увидят какая фича есть.
А вообще зачем-то есть на мантисе категория Known Error, только ей не пользуются.
https://t.me/FarManager — Telegram чат
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: При переключении кодировки BOM появляется прямо в редакт

Post by DrKnS »

Ок, представим по вашему:

открыли в анси, перелючили в утф, фар бом отрезал, переключили назад в анси - опа, а байтов-то стало меньше, чем было. Деструктивная операция. Без предупреждения. Плохо.
Непонятно зачем торопиться закрывать тикет, даже если нет намерения фиксить. Пусть себе повисит некоторое время - люди хоть увидят какая фича есть.
Затем, чтобы "два раза не вставать".
Если сильно не согласен - открой, повисит.
А вообще зачем-то есть на мантисе категория Known Error, только ей не пользуются.
Known Error - это таки про ошибки, а не про всё подряд.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: При переключении кодировки BOM появляется прямо в редакт

Post by John Doe »

DrKnS wrote:открыли в анси, перелючили в утф, фар бом отрезал, переключили назад в анси - опа, а байтов-то стало меньше, чем было. Деструктивная операция. Без предупреждения. Плохо.
А может ли изначально в анси быть BOM? Неужто влазит в кодировку?
DrKnS wrote:
А вообще зачем-то есть на мантисе категория Known Error, только ей не пользуются.
Known Error - это таки про ошибки, а не про всё подряд.
А что, название общее, можно трактовать и как ошибки пользователя :wink:
https://t.me/FarManager — Telegram чат
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: При переключении кодировки BOM появляется прямо в редакт

Post by DrKnS »

В Анси не может быть таких символов, о чём фар и предупреждает (выше я писал).
Выше было про пересохранение, тут - про смену кодовой страницы. Немного разные вещи.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: При переключении кодировки BOM появляется прямо в редакт

Post by John Doe »

DrKnS wrote:Ок, представим по вашему:

открыли в анси, перелючили в утф, фар бом отрезал, переключили назад в анси - опа, а байтов-то стало меньше, чем было. Деструктивная операция. Без предупреждения. Плохо.
"По нашему" ничем не отличается от того что есть сейчас: Открыли файл в UTF-8, переключили в 866, нажали F2 - бома нет. И хорошо что нет, зачем он в Анси?

Ах да, файл же на самом деле не в анси.
Так нефиг F2 жать в неправильной кодировке! Ничего, исправим - ShiftF2
https://t.me/FarManager — Telegram чат
Victorian
Posts: 80
Joined: Sun 11 Oct, 2009 05:55
Has thanked: 1 time

Re: При переключении кодировки BOM появляется прямо в редакт

Post by Victorian »

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

Появляется BOM-код в экзотических условиях, когда есть необхоидмость исправить текст после неправильного преобразования 866->UTF-8.
Переключение в редакторе текста в UTF-8 на другие кодировки (866, 1251) тут же делает текст испорченным двухбайтовым, а попытка переключиться во вьювер и открыть HEX-просмотр тут же обнажает BOM-код, который остаётся после возврата в обычный режим просмотра.
Я не понимаю, зачем обманывать себя и оставлять BOM-код доступным для просмотра/сохранения, если кодировка уже не UTF-8 ?
Ведь его же можно всегда добавить вновь при переключении в кодировку UTF-8...
Victorian
Posts: 80
Joined: Sun 11 Oct, 2009 05:55
Has thanked: 1 time

Re: При переключении кодировки BOM появляется прямо в редакт

Post by Victorian »

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

В данном случае, нужно подправить выборочно строку из Descript.ion.
Может быть, есть для этого какой-либо макрос?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: При переключении кодировки BOM появляется прямо в редакт

Post by John Doe »

Shift-F2, причём я об этом уже упоминал.
И в этой теме ваш вопрос является оффтопиком.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

В UTF-8 показывается символ сигнатуры

Post by Smitis »

Если файл в UTF-8 с сигнатурой открыть в CP1251 (или другой однобайтной), а потом переключится (ShiftF8) на UTF-8, в начале текста остаётся символ, видимо, соответствующий байтам сигнатуры. После переоткрытия файла всё показывается нормально. Удаление этого символа приводит к удаление байтов сигнатуры из файла.

П.С.
А если открыть в кодировке IBM EBCDIC (500), а потом переключится на UTF-8, показываются ещё и символы конца строк.
Разум когда-нибудь победит.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: В UTF-8 показывается символ сигнатуры

Post by DrKnS »

Nicolai
Posts: 3
Joined: Wed 16 Sep, 2015 22:12

Искажение информации в редакторе по F4, после переключения кодировок

Post by Nicolai »

Если набрать следующую информацию в редакторе по F4 при кодовой странице OEM (866)

ы и
я т
п.и
т.и

то после переключения в UTF-8 (65001) и обратно в OEM (866) получаем следующее

ыаи
я т
п.и
тои

Редактор не замечает изменений и если выйти по ESC то выход идёт без запроса на сохранение изменений
и сам исходный файл не изменяется. Но если сделать сохранение по F2, то файл уже становится изменённым.

Я проверял без плагинов по FAR /P - всё то же самое

Проверено на 3.0 build 5354 x64 Far30b5354.x86.20190117.msi (help выдаёт неверную информацию, что это 3.0 build 5254 x64
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Искажение информации в редакторе по F4, после переключения кодировок

Post by HaRT »

Nicolai wrote: Tue 05 Feb, 2019 11:38 после переключения в UTF-8 (65001) и обратно в OEM (866) получаем
Подтверждаю.
Nicolai wrote: Tue 05 Feb, 2019 11:38 выход идёт без запроса на сохранение изменений
Подтверждаю.
Nicolai wrote: Tue 05 Feb, 2019 11:38 help выдаёт неверную информацию, что это 3.0 build 5254 x64
В сборке 5356 такого нет.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Nicolai
Posts: 3
Joined: Wed 16 Sep, 2015 22:12

Искажение информации в редакторе по F4, после переключения кодировок

Post by Nicolai »

Тысячу извинений про сообщение, что help выдаёт неверную информацию. У меня установлен 3.0 build 5254 x64, и я ещё проверил на 3.0 build 5354 x86. Основная проблема осталась, но при переключении экранов я перепутал что у меня где, и сообщил что help "ошибается" :)
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

При переключении кодировки BOM появляется прямо в редакторе

Post by DrKnS »

Nicolai wrote: Tue 05 Feb, 2019 11:38ыаи
5358.
Post Reply

Return to “Глюки и баги”