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

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

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

Post by John Doe » Thu 13 May, 2010 21:17

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

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

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

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

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

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


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

P.S.
Непонятно зачем торопиться закрывать тикет, даже если нет намерения фиксить. Пусть себе повисит некоторое время - люди хоть увидят какая фича есть.
А вообще зачем-то есть на мантисе категория Known Error, только ей не пользуются.

User avatar
DrKnS
Posts: 5105
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 184 times

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

Post by DrKnS » Thu 13 May, 2010 21:40

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

открыли в анси, перелючили в утф, фар бом отрезал, переключили назад в анси - опа, а байтов-то стало меньше, чем было. Деструктивная операция. Без предупреждения. Плохо.
Непонятно зачем торопиться закрывать тикет, даже если нет намерения фиксить. Пусть себе повисит некоторое время - люди хоть увидят какая фича есть.
Затем, чтобы "два раза не вставать".
Если сильно не согласен - открой, повисит.
А вообще зачем-то есть на мантисе категория Known Error, только ей не пользуются.
Known Error - это таки про ошибки, а не про всё подряд.

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

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

Post by John Doe » Thu 13 May, 2010 21:52

DrKnS wrote:открыли в анси, перелючили в утф, фар бом отрезал, переключили назад в анси - опа, а байтов-то стало меньше, чем было. Деструктивная операция. Без предупреждения. Плохо.
А может ли изначально в анси быть BOM? Неужто влазит в кодировку?
DrKnS wrote:
А вообще зачем-то есть на мантисе категория Known Error, только ей не пользуются.
Known Error - это таки про ошибки, а не про всё подряд.
А что, название общее, можно трактовать и как ошибки пользователя :wink:

User avatar
DrKnS
Posts: 5105
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 184 times

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

Post by DrKnS » Thu 13 May, 2010 22:15

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

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

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

Post by John Doe » Thu 13 May, 2010 22:44

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

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

Ах да, файл же на самом деле не в анси.
Так нефиг F2 жать в неправильной кодировке! Ничего, исправим - ShiftF2

Victorian
Posts: 80
Joined: Sun 11 Oct, 2009 05:55
Has thanked: 1 time

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

Post by Victorian » Sun 27 Jun, 2010 14:23

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 » Sun 27 Jun, 2010 14:29

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

В данном случае, нужно подправить выборочно строку из Descript.ion.
Может быть, есть для этого какой-либо макрос?

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

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

Post by John Doe » Sun 27 Jun, 2010 19:25

Shift-F2, причём я об этом уже упоминал.
И в этой теме ваш вопрос является оффтопиком.

Smitis
Posts: 1559
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 16 times
Been thanked: 31 times
Contact:

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

Post by Smitis » Mon 22 Jul, 2013 07:20

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

П.С.
А если открыть в кодировке IBM EBCDIC (500), а потом переключится на UTF-8, показываются ещё и символы конца строк.
Разум когда-нибудь победит.

User avatar
DrKnS
Posts: 5105
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 184 times

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

Post by DrKnS » Mon 22 Jul, 2013 08:12


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

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

Post by Nicolai » Tue 05 Feb, 2019 11:38

Если набрать следующую информацию в редакторе по 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: 8605
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 77 times
Been thanked: 140 times

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

Post by HaRT » Tue 05 Feb, 2019 11:57

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 » Tue 05 Feb, 2019 12:06

Тысячу извинений про сообщение, что help выдаёт неверную информацию. У меня установлен 3.0 build 5254 x64, и я ещё проверил на 3.0 build 5354 x86. Основная проблема осталась, но при переключении экранов я перепутал что у меня где, и сообщил что help "ошибается" :)

User avatar
DrKnS
Posts: 5105
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 184 times

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

Post by DrKnS » Tue 05 Feb, 2019 22:22

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

Post Reply

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