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

Хотите говорить о Far и не знаете, куда обратиться?
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH » Tue 31 Dec, 2013 18:26

Latest post of the previous page:

Не знаю, не знаю, у меня случалось, что BOM ну вот совсем не упал. Поэтому я бы предпочёл ставить птичку, чем её снимать.

User avatar
lazyeugene
Posts: 243
Joined: Sat 29 Aug, 2009 17:14
Has thanked: 1 time

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

Post by lazyeugene » Tue 31 Dec, 2013 18:32

Dzirt2005 wrote: Ничего там не сложнее. По сути, обработка BOM нужна в require/require_once и include/include_once. В этом месте никаких архивов или других двоичных файлов быть не может в принципе. Это решает 99% поддержки. Остальное решается точно так же, как и в других языках программирования - режимом открытия файла. Файл можно открывать как текстовый, желательно с дополнительным указанием кодировки символов, или как двоичный. И все. А "by design в PHP" это просто глупость.
Я тоже когда-то так считал, но это не так. Любой файл PHP, независимо от require/include начинается не с PHP-кода до первого открывающего тега и там могут быть ЛЮБЫЕ данные. На этом всё. Остальное - спекуляция.

User avatar
lazyeugene
Posts: 243
Joined: Sat 29 Aug, 2009 17:14
Has thanked: 1 time

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

Post by lazyeugene » Tue 31 Dec, 2013 18:34

AleXH wrote:Не знаю, не знаю, у меня случалось, что BOM ну вот совсем не упал. Поэтому я бы предпочёл ставить птичку, чем её снимать.
Ну так вот как найти переключатель.

Dzirt2005
Posts: 296
Joined: Fri 29 Feb, 2008 12:11
Been thanked: 1 time

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

Post by Dzirt2005 » Tue 31 Dec, 2013 18:40

lazyeugene wrote:...
Я тоже когда-то так считал, но это не так. Любой файл PHP, независимо от require/include начинается не с PHP-кода до первого открывающего тега и там могут быть ЛЮБЫЕ данные. На этом всё. Остальное - спекуляция.
"Любой файл PHP" - и есть чистой воды спекуляция. Такого не существует в природе. Есть исходный код (программа) и есть данные. Исходный код PHP всегда текстовый, даже если файл включает кроме непосредственно самого PHP страницу html, все равно весь файл рассматривается как единый текстовый файл в одной и той же кодировке (кодировка может быть разной, но в пределах файла она одна). Никаких ЛЮБЫХ данных там не может быть.

User avatar
lazyeugene
Posts: 243
Joined: Sat 29 Aug, 2009 17:14
Has thanked: 1 time

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

Post by lazyeugene » Tue 31 Dec, 2013 19:10

Dzirt2005 wrote: "Любой файл PHP" - и есть чистой воды спекуляция. Такого не существует в природе. Есть исходный код (программа) и есть данные. Исходный код PHP всегда текстовый, даже если файл включает кроме непосредственно самого PHP страницу html, все равно весь файл рассматривается как единый текстовый файл в одной и той же кодировке (кодировка может быть разной, но в пределах файла она одна). Никаких ЛЮБЫХ данных там не может быть.
Бесполезно отрицать реальность. Там может быть почти что угодно, а после __halt_compiler() может быть вообще абсолютно что угодно. Приятно верить, что все php-фалы - это исходники в виде текстового файла (и, наверное, это было бы удобнее), но это не соответствует реальности.

User avatar
lazyeugene
Posts: 243
Joined: Sat 29 Aug, 2009 17:14
Has thanked: 1 time

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

Post by lazyeugene » Tue 31 Dec, 2013 19:36

Чтоб не морочить дальше голову теориями, вот простейший пример файла с бинарными данными (sample1.php в архиве). Поместить содержимое архива на веб-сервер, обратиться к sample.php. Если есть алгоритм, как php-движку решать, отрезать BOM с начала файла или нет - php открытый проект, если нет такого однозначного решения - тогда не надо разводить тут насчёт того, что php - это всегда чисто текст.

Далее это всё выливается в полный оффтопик, так что я призываю закрыть эту дискуссию здесь. Кому надо отключить автодобавление BOM - используйте настройку в far:config Editor.AddUnicodeBOM. Кому не нужно - не используйте. Кто точно знает, как должен работать php, и считает, что он работает не так, как должен - велкам на php.net
Attachments
sample.zip
(1.22 KiB) Downloaded 79 times

Dzirt2005
Posts: 296
Joined: Fri 29 Feb, 2008 12:11
Been thanked: 1 time

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

Post by Dzirt2005 » Tue 31 Dec, 2013 20:13

lazyeugene wrote:Чтоб не морочить дальше голову теориями, вот простейший пример файла с бинарными данными (sample1.php в архиве).
Да, конечно. Твой пример стал возможным только потому, что php ТАК работает. И это не означает, что это правильно. Я уже молчу о том, что тебе будет достаточно сложно придумать осмысленный пример, что ТАК делать именно НУЖНО и по другому НЕЛЬЗЯ. Разницы не видишь конечно же, да? Да и поскольку php это вещь в себе, никаким стандартам не подчиняющаяся, кто мешал разработчикам сделать пару вариантов include\bin_include или наоборот - without_bom_include/include? Да никто не мешал. Исключительно высокое самомнение о себе разработчиков php.
lazyeugene wrote:Если есть алгоритм, как php-движку решать, отрезать BOM с начала файла или нет
Конечно же есть! Выше приведен. И пусть программист решает. Я также промолчу о возможности задать поведение include/require в php.ini... Нет, php очень "современный" язык! И плевать он хотел на сложившиеся реалии, пусть весь мир под него прогибается...

User avatar
lazyeugene
Posts: 243
Joined: Sat 29 Aug, 2009 17:14
Has thanked: 1 time

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

Post by lazyeugene » Tue 31 Dec, 2013 21:03

Dzirt2005 wrote: Да, конечно. Твой пример стал возможным только потому, что php ТАК работает. И это не означает, что это правильно.
Ты не поверишь, php изначально делался, чтобы ТАК работать.
Dzirt2005 wrote: Конечно же есть! Выше приведен. И пусть программист решает. Я также промолчу о возможности задать поведение include/require в php.ini... Нет, php очень "современный" язык! И плевать он хотел на сложившиеся реалии, пусть весь мир под него прогибается...
Просто супер, когда не-пхпшники рассуждают о том, как следует использовать этот язык. Сейчас ещё холивар начни, какой язык лучше. Есть язык, он работает так, свои задачи выполняет. Не нравится - не используй.

Dzirt2005
Posts: 296
Joined: Fri 29 Feb, 2008 12:11
Been thanked: 1 time

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

Post by Dzirt2005 » Tue 31 Dec, 2013 21:19

lazyeugene wrote:...
Просто супер, когда не-пхпшники рассуждают о том, как следует использовать этот язык.
С чего ты решил, что я его не использую? Или что он мне так уж не нравится? Но вот некоторые вещи реально бесят, в частности вот это упоротое нежелание его разработчиков сделать по-человечески обработку BOM'а, вариантов как можно было бы сделать масса, но не сделано вообще никак. И нет никакой причины почему не надо этого делать, тупое упрямство.

PS: Да, я также достаточно хорошо знаю C/C++ чтобы самостоятельно ввести в язык эту обработку. Только как бы кому нужно _мое_ решение, это должно быть в основной ветке, а не в какой-то никому неизвестной кастомной сборке.

User avatar
lazyeugene
Posts: 243
Joined: Sat 29 Aug, 2009 17:14
Has thanked: 1 time

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

Post by lazyeugene » Tue 31 Dec, 2013 22:09

Dzirt2005 wrote:
lazyeugene wrote:...
Просто супер, когда не-пхпшники рассуждают о том, как следует использовать этот язык.
С чего ты решил, что я его не использую? Или что он мне так уж не нравится? Но вот некоторые вещи реально бесят, в частности вот это упоротое нежелание его разработчиков сделать по-человечески обработку BOM'а, вариантов как можно было бы сделать масса, но не сделано вообще никак. И нет никакой причины почему не надо этого делать, тупое упрямство.
Я не говорю, что не используешь. Просто, то, что очевидно мне, почему-то не очевидно тебе. А именно - что php отличается от других языков как раз тем, что он "встроен" в "произвольный" контент, из чего следуют некоторые вещи, не совсем очевидные. Вот, типа BOM.

Всё, оффтопик. Дальше обсуждать php не нужно, отвечать тут на эту тему не буду.

Vasilich
Posts: 28
Joined: Fri 18 Dec, 2009 11:50

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

Post by Vasilich » Fri 03 Jan, 2014 09:18

Dzirt2005 wrote:"Современному" PHP уже надо было бы давным давно научится работать с BOM. Другой, действительно современный софт, уже давным давно это умеет и ему BOM совершенно не мешает. Может все-таки обратиться к разработчикам PHP, пусть подтянутся? ;)
Зачем мне холодильник, когда я не курю?

Поясняю еще раз:
1. PHP НЕ интересует
2. Интересует FAR и как отключить в его редакторе BOM при создании файла.
lazyeugene wrote:В командной строке far:config Enter
В меню жмём ctrl+alt+f после чего вводим b o m
Огромный сенькс! Кажись то, что нужно. Только интересно - почему столь важную настройку не вынесли в обычный юзерский конфиг, ведь этот BOM многим очень мешает. Например, различный современный софт, сохраняя данные в формате UTF-8 не ставит BOM и, соответственно, не ожидает его там встретить.

User avatar
HaRT
Moderator
Posts: 8832
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 86 times
Been thanked: 151 times

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

Post by HaRT » Fri 03 Jan, 2014 18:48

Vasilich wrote:различный современный софт, сохраняя данные в формате UTF-8 не ставит BOM и, соответственно, не ожидает его там встретить.
Вместо повторения этой мантры лучше бы привели хотя бы пару примеров такого софта, кроме вышеупомянутого PHP.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Vasilich
Posts: 28
Joined: Fri 18 Dec, 2009 11:50

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

Post by Vasilich » Sat 04 Jan, 2014 09:55

Dzirt2005 wrote:Но вот некоторые вещи реально бесят, в частности вот это упоротое нежелание его разработчиков сделать по-человечески обработку BOM'а
Да зачем разработчикам заниматься этой фигней? Гадать мусор там в начале файла в виде BOM или полезный текст. Все IDE имеют средства управления этим BOM в настройках. И если для какого-то тяжкого случая этот BOM нужен (благо, мне в жизни с таким геморроем сталкиваться не приходится) - то имеется возможность его включить.
Всего делов-то.
В этой теме обсуждается не PHP, а FAR, как продвинутый инструмент у которого явно неочевидный способ включения нормального режима работы с UTF-8.

PS: может если бы разработчики кодировок издревле пихали в текстовые файлы со своей кодировкой какие-то сигнатуры, то это было бы нормальным подходом - ставить костыли на открытие файлов для анализа что за сюрприз нас поджидает внутри. Благо, мир устроен проще и, как оказалось, FAR тоже можно настроить на классическую работу с очередной кодировкой. Правда, через задний проход, а не через меню настроек.

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

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

Post by 2useven10 » Sat 04 Jan, 2014 10:23

очень терпеливые у нас модераторы.

Vasilich
Posts: 28
Joined: Fri 18 Dec, 2009 11:50

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

Post by Vasilich » Sat 04 Jan, 2014 10:35

HaRT wrote:
Vasilich wrote:различный современный софт, сохраняя данные в формате UTF-8 не ставит BOM и, соответственно, не ожидает его там встретить.
Вместо повторения этой мантры лучше бы привели хотя бы пару примеров такого софта, кроме вышеупомянутого PHP.
У меня нет примеров обратного. По работе обмен данными происходит между самым широким набором платформ (Win/Mac/Linux/FreeBSD и т.п.). Люди работают с тем, что им удобно.
BOM воспринимается как мусор в начале файла, который портит данные (я несколько раз нарывался, когда отправлял файлы, созданные в FAR).
Для интереса решил глянуть как сохраняет данные такой малоизвестный продукт, как MS Office (просто знаю, что пользователи под Mac сохраняют в Excell инфу и грузят ее в разные подсистемы) - никаких BOM не обнаружено, чистый UTF-8 файл в формате CSV.
Под виндузой, сохраняю файл в excell (Книга1.xlsx), открываю содежримое:

Code: Select all

0000000000: 3C 3F 78 6D 6C 20 76 65 │ 72 73 69 6F 6E 3D 22 31  <?xml version="1
0000000010: 2E 30 22 20 65 6E 63 6F │ 64 69 6E 67 3D 22 55 54  .0" encoding="UT
0000000020: 46 2D 38 22 20 73 74 61 │ 6E 64 61 6C 6F 6E 65 3D  F-8" standalone=
ну не используется BOM за ненадобностью. Я уж молчу про всевозможные дампы инфы которыми обмениваются кроссплатформенные решения.

И, честно говоря, холивары вокруг BOM как-бы не имеют смысла. Если какой-то экзотический софт вставляет его - ну и Бог с ним. Мне было важно получить информацию относительно FAR: как оказалось, мой любимый инструмент можно настроить для безгеморройной работы, что не может не радовать (правда, далеко не самым очевидным способом).
Огромное спасибо за подсказку как избавиться от BOM. Большая просьба - включить этот момент в FAQ - море народу мучается.

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

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

Post by John Doe » Sat 04 Jan, 2014 11:38

По-хорошему надо отделить весь оффтопик, но модераторы ленивы, да...

Вроде как после 0002407 обсуждать больше нечего.
Вот разжёвано:

Тема закрыта, тем более есть Как создать новый UTF8 файл без BOM?

P.S.
Оффтоп там будет пресекаться, а если кто хочет ещё похоливарить - милости просим в спецразделы форума:

Locked

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