В редакторе теперь BOM по умолчанию?

Хотите говорить о Far и не знаете, куда обратиться?
Locked
Tonal
Posts: 73
Joined: Sat 27 Oct, 2007 14:42
Location: Новосибирск
Contact:

В редакторе теперь BOM по умолчанию?

Post by Tonal »

Версия 2.0 build 1234 x86
Воспроизведение:
Создаю файл Shift+F4: ввожу имя, указываю кодировку UTF-8
В файле ввожу несколько переводов строки сохраняюсь и выхожу
В начале файла 2 паразитных байта бома.

Для того, чтобы указать его отсутствие приходится явно открывать диалог "Сохранить в" (Shift+F2) и снимать галочку.

Однако нужна настройка нужно это безобразие по умолчанию или нет.
Мне вот нафиг не нужна и лишнее действие изрядно напрягает. :evil:
Буддизм Алмазного Пути, линия Карма Кагью.
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 »

В редакторе теперь BOM по умолчанию?
Да.
В начале файла 2 паразитных байта бома.
Не "паразитных", а "являющихся общепринятыми в windows".
Однако нужна настройка нужно это безобразие по умолчанию или нет.
В интерфейсе не нужна, а в виде какого-нибудь EditorSetParameter::ESPT_<G|S>ETBOMSTATE - вполне, чтобы можно было рулить через ESC.
Tonal
Posts: 73
Joined: Sat 27 Oct, 2007 14:42
Location: Новосибирск
Contact:

Re: В редакторе теперь BOM по умолчанию?

Post by Tonal »

DrKnS wrote:
В редакторе теперь BOM по умолчанию?
Да.
Ужос!
DrKnS wrote:Не "паразитных", а "являющихся общепринятыми в windows".
Не "являющихся общепринятыми в windows" а навязываемыми в хр, свисте. :x

У меня Far основной инструмент для работы с исходниками и большинство компиляторов/интерпретаторов на таких файлах обламываются.
А вот стандартный Блакнот файлы в utf-8 без BOM нормально открывает и отображает.
Так что, ИМХО, по умолчанию, лучше создавать без BOM-ов.
DrKnS wrote:
Однако нужна настройка нужно это безобразие по умолчанию или нет.
В интерфейсе не нужна, а в виде какого-нибудь EditorSetParameter::ESPT_<G|S>ETBOMSTATE - вполне, чтобы можно было рулить через ESC.
В диалоге настроек редактора. Там уже есть галочка: "Использовать кодовую страницу ANSI при создании файлов".
Вместо неё выбор кодировок и чек для BOM-а в случае utf-8, а так же utf-16, utf-32 которые тоже могут быть без BOM-а (здесь)
Буддизм Алмазного Пути, линия Карма Кагью.
User avatar
GrAnD
Posts: 351
Joined: Thu 13 Oct, 2005 23:47
Location: Amsterdam
Been thanked: 3 times
Contact:

Re: В редакторе теперь BOM по умолчанию?

Post by GrAnD »

Tonal wrote: большинство компиляторов/интерпретаторов на таких файлах обламываются.
можно узнать что за динозавры?
я все исходники перевел в utf-8, компиляторы не заметили

unicode без BOM - это зло
Tonal
Posts: 73
Joined: Sat 27 Oct, 2007 14:42
Location: Новосибирск
Contact:

Re: В редакторе теперь BOM по умолчанию?

Post by Tonal »

На вскидку: Delphi 7, Borland C++ Biulder 6, python 2.5, mingw gcc ...

В спецификации явно написано, что utf-16, utf-32 могут быть без BOM и как это трактовать.
А вот utf-8 может быть с BOM.
Причём т.к. к utf-8 не применимо понятие порядок байт, то и BOM для него ИМХО является избыточным и бессмысленным. :)

Но даже не важно нужен или нет нет BOM в файлах с utf-8.
Важно то, что очень многие программы на нём обламываются.
Стало быть должна быть настройка для поведения по умолчанию.

Я, например, часто редактирую файлы через ssh на линухах - там BOM тоже не нужен.
Буддизм Алмазного Пути, линия Карма Кагью.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: В редакторе теперь BOM по умолчанию?

Post by NightRoman »

GrAnD wrote:
Tonal wrote: большинство компиляторов/интерпретаторов на таких файлах обламываются.
можно узнать что за динозавры?
я все исходники перевел в utf-8, компиляторы не заметили

unicode без BOM - это зло
Я в этом не спец. Но знаю, что на Mac у нас были проблемы с исходниками, которые должны и на Винде и на Маке компилится (БОМ на Маке не прошел). Решили тем, что убрали БОМы из исходников, и Visual Studio позволяет настроить, как создавать\сохранять по умолчанию новые файлы. Теперь все компилится и там, и там. То есть теоретически, если такая настройка будет в Фаре, кому-нибудь она может и быть полезной в определенных сценариях (чисто на Винде это вроде лишнее, а вот когда прицел есть, что то, что редактируется, будет использовано и еще где-то - надо бы).

P.S. Но по умолчанию БОМ должен писаться. А настройку можно и в тех.инфо, может впихнуть, большинству это вряд ли надо, будет только загромождать диалог, да и нежелательное использование теми, кто не понимает что это и зачем.
User avatar
GrAnD
Posts: 351
Joined: Thu 13 Oct, 2005 23:47
Location: Amsterdam
Been thanked: 3 times
Contact:

Re: В редакторе теперь BOM по умолчанию?

Post by GrAnD »

Tonal wrote:На вскидку: Delphi 7, Borland C++ Biulder 6
Посмотрите на год выпуска этих компиляторов
Если в 1993 году в дос использовалась кодировка 866 ведь это же не значит что надо сейчас все кодировать в ней
Эти компиляторы ждут кодировку 1251 на русской системе поэтому я не совсем понимаю причем тут utf
Tonal wrote: python 2.5
не уверен что не поддерживает, надо проверить
Tonal wrote: mingw gcc
Обманываете
Tonal wrote: В спецификации явно написано, что utf-16, utf-32 могут быть без BOM и как это трактовать.
А вот utf-8 может быть с BOM.
Я как человек которому приходится редактировать файлы на нескольких языках ожидал бы чтобы редакторы открывали их в правильной кодировке, поэтому без BOM обойтись не могу, иначе редакторы бы открывали файлы как попало, особенно это касается utf-8.
Tonal wrote: Причём т.к. к utf-8 не применимо понятие порядок байт, то и BOM для него ИМХО является избыточным и бессмысленным. :)
Вы не совсем до конца поняли назначение BOM
Tonal wrote: Важно то, что очень многие программы на нём обламываются.
Это всего лишь из-за древности применяемых программ.
Tonal wrote: Стало быть должна быть настройка для поведения по умолчанию.
Возможно. Но все таки IMHO фар должен подталкивать пользователя сделать правильнее.
Tonal wrote:Я, например, часто редактирую файлы через ssh на линухах - там BOM тоже не нужен.
опять же это связано лишь с тем что используемые вами редакторы программисты не торопятся привести в порядок относительно работы с кодировками. для правильного редактора BOM должен быть прозрачен, пользователь даже не должен знать о его существовании.
User avatar
GrAnD
Posts: 351
Joined: Thu 13 Oct, 2005 23:47
Location: Amsterdam
Been thanked: 3 times
Contact:

Re: В редакторе теперь BOM по умолчанию?

Post by GrAnD »

NightRoman wrote:Но знаю, что на Mac у нас были проблемы с исходниками, которые должны и на Винде и на Маке компилится (БОМ на Маке не прошел).
А чем на маке собирают? у него свой компилятор какой-то?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: В редакторе теперь BOM по умолчанию?

Post by NightRoman »

GrAnD wrote:А чем на маке собирают? у него свой компилятор какой-то?
Понятия не имею, "не по моему департаменту" это. Наверное, свой компилятор(ы), не Visual Studio же там, иначе б проблемы и не было.
User avatar
GrAnD
Posts: 351
Joined: Thu 13 Oct, 2005 23:47
Location: Amsterdam
Been thanked: 3 times
Contact:

Re: В редакторе теперь BOM по умолчанию?

Post by GrAnD »

NightRoman wrote:
GrAnD wrote:А чем на маке собирают? у него свой компилятор какой-то?
Понятия не имею, "не по моему департаменту" это. Наверное, свой компилятор(ы), не Visual Studio же там, иначе б проблемы и не было.
я всегда думал что по скольку MAC - это юникс то там собирают на gcc, а он прекрасно понимает BOM...
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: В редакторе теперь BOM по умолчанию?

Post by HaRT »

GrAnD wrote:
NightRoman wrote:Но знаю, что на Mac у нас были проблемы с исходниками, которые должны и на Винде и на Маке компилится (БОМ на Маке не прошел).
А чем на маке собирают? у него свой компилятор какой-то?
Там есть родная среда разработки XCode, но многие для кросс-платформенной сборки используют gcc и иже с ним.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Tonal
Posts: 73
Joined: Sat 27 Oct, 2007 14:42
Location: Новосибирск
Contact:

Re: В редакторе теперь BOM по умолчанию?

Post by Tonal »

GrAnD wrote:
Tonal wrote:На вскидку: Delphi 7, Borland C++ Biulder 6
Посмотрите на год выпуска этих компиляторов
Если в 1993 году в дос использовалась кодировка 866 ведь это же не значит что надо сейчас все кодировать в ней
Эти компиляторы ждут кодировку 1251 на русской системе поэтому я не совсем понимаю причем тут utf
Эти компиляторы не "ждут кодировку 1251" они обрабатывают исходник как 8и битный текст.
И BOM в начале файла приведёт в синтаксической ошибке, а вот в комментариях и строках могут быть любые последовательности байт.

Да и зачем мне смотреть на их год выпуска если мне нужно поддерживать проекты, которые на них работают?
Ещё на Borland C++ 5.02 есть проекты...
А вот денег на перевод этого добра под новьё никто не даст.
GrAnD wrote:
Tonal wrote: python 2.5
не уверен что не поддерживает, надо проверить
Натыкался.
Попробовал обучить пользователя по телефону, что в блокноте можно выбрать сохранение без BOM, но потом плюнул, и научил запускать IDLE. :)
GrAnD wrote:
Tonal wrote: mingw gcc
Обманываете
Действительно, mingw32 v 4.4.0 сожрал.
А вот mingw32-make (наипоследний GNU Make 3.81) сказал:

Code: Select all

mingw32-make: *** No rule to make target `echo', needed by `п»їall'.  Stop.
Т.е. он воспринимает BOM как символы.
Вот вывод bash (наипоследний GNU bash, version 3.1.17(1)-release (i686-pc-msys))

Code: Select all

bom_test.sh: bom_test.sh: cannot execute binary file
Остальные утилиты из набора mingw/msys проверять лениво, но почему-то кажется что и в них не лучше...
GrAnD wrote: Я как человек которому приходится редактировать файлы на нескольких языках ожидал бы чтобы редакторы открывали их в правильной кодировке, поэтому без BOM обойтись не могу, иначе редакторы бы открывали файлы как попало, особенно это касается utf-8.
В python-е по стандарту в первой или второй строке скрипта должна указываться кодировка таким образом:

Code: Select all

# -*- coding: utf-8 -*-
Этот же формат понимают большинство *nix-овских редакторов.
В XML кодировка тоже указывается в заголовке.
BOM никак не решает проблему кодировок.
GrAnD wrote:
Tonal wrote: Причём т.к. к utf-8 не применимо понятие порядок байт, то и BOM для него ИМХО является избыточным и бессмысленным. :)
Вы не совсем до конца поняли назначение BOM
Насколько я понимаю, BOM для utf-8 может использоваться только как необязательная сигнатура файла.
Я опираюсь на википедию и FAQ c unicode.org.
Если я чего-то не понял - разясни. :)
GrAnD wrote:
Tonal wrote: Важно то, что очень многие программы на нём обламываются.
Это всего лишь из-за древности применяемых программ.
Таки это не отменяет необходимости с ними работать.
Новых зачастую нет и не предвидится.

Лучше приведи список программ, которые не могут работать с файлами в кодировке utf-8 без BOM.
Чеё список будет больше/весомей для народа? :)
GrAnD wrote:
Tonal wrote: Стало быть должна быть настройка для поведения по умолчанию.
Возможно. Но все таки IMHO фар должен подталкивать пользователя сделать правильнее.
Вот пусть она будет включена по умолчанию.
Но нужно чтобы это поведение можно было просто поменять - объяснять по телефону глухому пользователя как править реестр довольно утомительно...
GrAnD wrote:
Tonal wrote:Я, например, часто редактирую файлы через ssh на линухах - там BOM тоже не нужен.
опять же это связано лишь с тем что используемые вами редакторы программисты не торопятся привести в порядок относительно работы с кодировками. для правильного редактора BOM должен быть прозрачен, пользователь даже не должен знать о его существовании.
Не редакторами едиными. :)
Большинство утилит комм-строки работают в потоковом режиме. Это значит, что они получают на вход (stdin) поток и результат отправляют на выход (stdout).
По спецификации они не могут произвольно добавлять в поток какой-то символ или игнорировать его, ведь BOM - это тоже символ.
Т.е. такое их поведение основано на спецификации, а не на лени или произволе.
Поэтому "новое" поведение можно ждать очень долго, а работать нужно сейчас.
Буддизм Алмазного Пути, линия Карма Кагью.
Kirill
Posts: 263
Joined: Thu 04 Aug, 2005 10:27
Location: Kaliningrad
Has thanked: 3 times
Contact:

Re: В редакторе теперь BOM по умолчанию?

Post by Kirill »

Я присоединяюсь к вопросу установки нужности BOM по-умолчанию.
Например интерпретатор PHP в упор не хочет корректно обрабатывать такие файлы.
User avatar
[e]Bu$ter
Posts: 792
Joined: Mon 30 May, 2005 23:05
Location: Беларусь, Минск
Contact:

Re: В редакторе теперь BOM по умолчанию?

Post by [e]Bu$ter »

Kirill wrote:Я присоединяюсь к вопросу установки нужности BOM по-умолчанию.
Например интерпретатор PHP в упор не хочет корректно обрабатывать такие файлы.
Я хотел присоединиться с тем же аргументом. Сколько раз уже людям приходилось объяснять людям откуда берётся ошибка «Cannot modify header information - headers already sent» и как её исправить.

Однако, если добавление BOM — это в общем случае правильное поведение, то проблема с PHP — наша частная проблема.
Ну придётся теперь при создании сохранять всё без сигнатуры, и ладно — я лично привыкну. Главное, чтоб при редактировании ничего не добавлялось.
Tonal
Posts: 73
Joined: Sat 27 Oct, 2007 14:42
Location: Новосибирск
Contact:

Re: В редакторе теперь BOM по умолчанию?

Post by Tonal »

Из таких частных проблем и складывается удобство использования.
Я пока не сталкивался ни с одной программой, которая бы неверно работала с файлами в кодировке utf-8 без BOM.
А вот с программами, которые обламываются при наличии BOM в файлах с кодировкой utf-8 сталкиваюсь постоянно.

Поэтому и нужен простой способ изменить поведение FAR по умолчанию в этом случае.
Чтобы людям можно было просто объяснить какую галку убрать/поставить.
Буддизм Алмазного Пути, линия Карма Кагью.
Locked

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