Latest post of the previous page:
Не знаю, не знаю, у меня случалось, что BOM ну вот совсем не упал. Поэтому я бы предпочёл ставить птичку, чем её снимать.В редакторе теперь BOM по умолчанию?
- lazyeugene
- Posts: 243
- Joined: Sat 29 Aug, 2009 17:14
- Has thanked: 1 time
Re: В редакторе теперь BOM по умолчанию?
Я тоже когда-то так считал, но это не так. Любой файл PHP, независимо от require/include начинается не с PHP-кода до первого открывающего тега и там могут быть ЛЮБЫЕ данные. На этом всё. Остальное - спекуляция.Dzirt2005 wrote: Ничего там не сложнее. По сути, обработка BOM нужна в require/require_once и include/include_once. В этом месте никаких архивов или других двоичных файлов быть не может в принципе. Это решает 99% поддержки. Остальное решается точно так же, как и в других языках программирования - режимом открытия файла. Файл можно открывать как текстовый, желательно с дополнительным указанием кодировки символов, или как двоичный. И все. А "by design в PHP" это просто глупость.
- lazyeugene
- Posts: 243
- Joined: Sat 29 Aug, 2009 17:14
- Has thanked: 1 time
Re: В редакторе теперь BOM по умолчанию?
Ну так вот как найти переключатель.AleXH wrote:Не знаю, не знаю, у меня случалось, что BOM ну вот совсем не упал. Поэтому я бы предпочёл ставить птичку, чем её снимать.
Re: В редакторе теперь BOM по умолчанию?
"Любой файл PHP" - и есть чистой воды спекуляция. Такого не существует в природе. Есть исходный код (программа) и есть данные. Исходный код PHP всегда текстовый, даже если файл включает кроме непосредственно самого PHP страницу html, все равно весь файл рассматривается как единый текстовый файл в одной и той же кодировке (кодировка может быть разной, но в пределах файла она одна). Никаких ЛЮБЫХ данных там не может быть.lazyeugene wrote:...
Я тоже когда-то так считал, но это не так. Любой файл PHP, независимо от require/include начинается не с PHP-кода до первого открывающего тега и там могут быть ЛЮБЫЕ данные. На этом всё. Остальное - спекуляция.
- lazyeugene
- Posts: 243
- Joined: Sat 29 Aug, 2009 17:14
- Has thanked: 1 time
Re: В редакторе теперь BOM по умолчанию?
Бесполезно отрицать реальность. Там может быть почти что угодно, а после __halt_compiler() может быть вообще абсолютно что угодно. Приятно верить, что все php-фалы - это исходники в виде текстового файла (и, наверное, это было бы удобнее), но это не соответствует реальности.Dzirt2005 wrote: "Любой файл PHP" - и есть чистой воды спекуляция. Такого не существует в природе. Есть исходный код (программа) и есть данные. Исходный код PHP всегда текстовый, даже если файл включает кроме непосредственно самого PHP страницу html, все равно весь файл рассматривается как единый текстовый файл в одной и той же кодировке (кодировка может быть разной, но в пределах файла она одна). Никаких ЛЮБЫХ данных там не может быть.
- lazyeugene
- Posts: 243
- Joined: Sat 29 Aug, 2009 17:14
- Has thanked: 1 time
Re: В редакторе теперь BOM по умолчанию?
Чтоб не морочить дальше голову теориями, вот простейший пример файла с бинарными данными (sample1.php в архиве). Поместить содержимое архива на веб-сервер, обратиться к sample.php. Если есть алгоритм, как php-движку решать, отрезать BOM с начала файла или нет - php открытый проект, если нет такого однозначного решения - тогда не надо разводить тут насчёт того, что php - это всегда чисто текст.
Далее это всё выливается в полный оффтопик, так что я призываю закрыть эту дискуссию здесь. Кому надо отключить автодобавление BOM - используйте настройку в far:config Editor.AddUnicodeBOM. Кому не нужно - не используйте. Кто точно знает, как должен работать php, и считает, что он работает не так, как должен - велкам на php.net
Далее это всё выливается в полный оффтопик, так что я призываю закрыть эту дискуссию здесь. Кому надо отключить автодобавление BOM - используйте настройку в far:config Editor.AddUnicodeBOM. Кому не нужно - не используйте. Кто точно знает, как должен работать php, и считает, что он работает не так, как должен - велкам на php.net
- Attachments
-
- sample.zip
- (1.22 KiB) Downloaded 158 times
Re: В редакторе теперь BOM по умолчанию?
Да, конечно. Твой пример стал возможным только потому, что php ТАК работает. И это не означает, что это правильно. Я уже молчу о том, что тебе будет достаточно сложно придумать осмысленный пример, что ТАК делать именно НУЖНО и по другому НЕЛЬЗЯ. Разницы не видишь конечно же, да? Да и поскольку php это вещь в себе, никаким стандартам не подчиняющаяся, кто мешал разработчикам сделать пару вариантов include\bin_include или наоборот - without_bom_include/include? Да никто не мешал. Исключительно высокое самомнение о себе разработчиков php.lazyeugene wrote:Чтоб не морочить дальше голову теориями, вот простейший пример файла с бинарными данными (sample1.php в архиве).
Конечно же есть! Выше приведен. И пусть программист решает. Я также промолчу о возможности задать поведение include/require в php.ini... Нет, php очень "современный" язык! И плевать он хотел на сложившиеся реалии, пусть весь мир под него прогибается...lazyeugene wrote:Если есть алгоритм, как php-движку решать, отрезать BOM с начала файла или нет
- lazyeugene
- Posts: 243
- Joined: Sat 29 Aug, 2009 17:14
- Has thanked: 1 time
Re: В редакторе теперь BOM по умолчанию?
Ты не поверишь, php изначально делался, чтобы ТАК работать.Dzirt2005 wrote: Да, конечно. Твой пример стал возможным только потому, что php ТАК работает. И это не означает, что это правильно.
Просто супер, когда не-пхпшники рассуждают о том, как следует использовать этот язык. Сейчас ещё холивар начни, какой язык лучше. Есть язык, он работает так, свои задачи выполняет. Не нравится - не используй.Dzirt2005 wrote: Конечно же есть! Выше приведен. И пусть программист решает. Я также промолчу о возможности задать поведение include/require в php.ini... Нет, php очень "современный" язык! И плевать он хотел на сложившиеся реалии, пусть весь мир под него прогибается...
Re: В редакторе теперь BOM по умолчанию?
С чего ты решил, что я его не использую? Или что он мне так уж не нравится? Но вот некоторые вещи реально бесят, в частности вот это упоротое нежелание его разработчиков сделать по-человечески обработку BOM'а, вариантов как можно было бы сделать масса, но не сделано вообще никак. И нет никакой причины почему не надо этого делать, тупое упрямство.lazyeugene wrote:...
Просто супер, когда не-пхпшники рассуждают о том, как следует использовать этот язык.
PS: Да, я также достаточно хорошо знаю C/C++ чтобы самостоятельно ввести в язык эту обработку. Только как бы кому нужно _мое_ решение, это должно быть в основной ветке, а не в какой-то никому неизвестной кастомной сборке.
- lazyeugene
- Posts: 243
- Joined: Sat 29 Aug, 2009 17:14
- Has thanked: 1 time
Re: В редакторе теперь BOM по умолчанию?
Я не говорю, что не используешь. Просто, то, что очевидно мне, почему-то не очевидно тебе. А именно - что php отличается от других языков как раз тем, что он "встроен" в "произвольный" контент, из чего следуют некоторые вещи, не совсем очевидные. Вот, типа BOM.Dzirt2005 wrote:С чего ты решил, что я его не использую? Или что он мне так уж не нравится? Но вот некоторые вещи реально бесят, в частности вот это упоротое нежелание его разработчиков сделать по-человечески обработку BOM'а, вариантов как можно было бы сделать масса, но не сделано вообще никак. И нет никакой причины почему не надо этого делать, тупое упрямство.lazyeugene wrote:...
Просто супер, когда не-пхпшники рассуждают о том, как следует использовать этот язык.
Всё, оффтопик. Дальше обсуждать php не нужно, отвечать тут на эту тему не буду.
Re: В редакторе теперь BOM по умолчанию?
Зачем мне холодильник, когда я не курю?Dzirt2005 wrote:"Современному" PHP уже надо было бы давным давно научится работать с BOM. Другой, действительно современный софт, уже давным давно это умеет и ему BOM совершенно не мешает. Может все-таки обратиться к разработчикам PHP, пусть подтянутся?
Поясняю еще раз:
1. PHP НЕ интересует
2. Интересует FAR и как отключить в его редакторе BOM при создании файла.
Огромный сенькс! Кажись то, что нужно. Только интересно - почему столь важную настройку не вынесли в обычный юзерский конфиг, ведь этот BOM многим очень мешает. Например, различный современный софт, сохраняя данные в формате UTF-8 не ставит BOM и, соответственно, не ожидает его там встретить.lazyeugene wrote:В командной строке far:config Enter
В меню жмём ctrl+alt+f после чего вводим b o m
- HaRT
- Moderator
- Posts: 11189
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 244 times
- Been thanked: 387 times
Re: В редакторе теперь BOM по умолчанию?
Вместо повторения этой мантры лучше бы привели хотя бы пару примеров такого софта, кроме вышеупомянутого PHP.Vasilich wrote:различный современный софт, сохраняя данные в формате UTF-8 не ставит BOM и, соответственно, не ожидает его там встретить.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Re: В редакторе теперь BOM по умолчанию?
Да зачем разработчикам заниматься этой фигней? Гадать мусор там в начале файла в виде BOM или полезный текст. Все IDE имеют средства управления этим BOM в настройках. И если для какого-то тяжкого случая этот BOM нужен (благо, мне в жизни с таким геморроем сталкиваться не приходится) - то имеется возможность его включить.Dzirt2005 wrote:Но вот некоторые вещи реально бесят, в частности вот это упоротое нежелание его разработчиков сделать по-человечески обработку BOM'а
Всего делов-то.
В этой теме обсуждается не PHP, а FAR, как продвинутый инструмент у которого явно неочевидный способ включения нормального режима работы с UTF-8.
PS: может если бы разработчики кодировок издревле пихали в текстовые файлы со своей кодировкой какие-то сигнатуры, то это было бы нормальным подходом - ставить костыли на открытие файлов для анализа что за сюрприз нас поджидает внутри. Благо, мир устроен проще и, как оказалось, FAR тоже можно настроить на классическую работу с очередной кодировкой. Правда, через задний проход, а не через меню настроек.
Re: В редакторе теперь BOM по умолчанию?
У меня нет примеров обратного. По работе обмен данными происходит между самым широким набором платформ (Win/Mac/Linux/FreeBSD и т.п.). Люди работают с тем, что им удобно.HaRT wrote:Вместо повторения этой мантры лучше бы привели хотя бы пару примеров такого софта, кроме вышеупомянутого PHP.Vasilich wrote:различный современный софт, сохраняя данные в формате UTF-8 не ставит BOM и, соответственно, не ожидает его там встретить.
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 как-бы не имеют смысла. Если какой-то экзотический софт вставляет его - ну и Бог с ним. Мне было важно получить информацию относительно FAR: как оказалось, мой любимый инструмент можно настроить для безгеморройной работы, что не может не радовать (правда, далеко не самым очевидным способом).
Огромное спасибо за подсказку как избавиться от BOM. Большая просьба - включить этот момент в FAQ - море народу мучается.
- John Doe
- Бюрократ
- Posts: 14236
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 80 times
- Been thanked: 466 times
- Contact:
Re: В редакторе теперь BOM по умолчанию?
По-хорошему надо отделить весь оффтопик, но модераторы ленивы, да...
Вроде как после 0002407 обсуждать больше нечего.
Вот разжёвано:
Тема закрыта, тем более есть Как создать новый UTF8 файл без BOM?
P.S.
Оффтоп там будет пресекаться, а если кто хочет ещё похоливарить - милости просим в спецразделы форума:
Вроде как после 0002407 обсуждать больше нечего.
Вот разжёвано:
Тема закрыта, тем более есть Как создать новый UTF8 файл без BOM?
P.S.
Оффтоп там будет пресекаться, а если кто хочет ещё похоливарить - милости просим в спецразделы форума: