UTF8 BOM - это зло

Здесь обсуждаются проблемы мироустройства.
Abs
Posts: 72
Joined: Tue 27 Jul, 2010 12:14
Been thanked: 7 times

UTF8 BOM - это зло

Post by Abs »

Latest post of the previous page:

SkvorBSD
Если вы считаете BOM описанием формата, информатику вам точно преподавали неадекватно. :)
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

UTF8 BOM - это зло

Post by HaRT »

SkvorBSD wrote: Пусть BOM - это описание семантики китайского и оно помещено в начало книги.
Совершенно некорректная аналогия! BOM — это не описание формата, а лишь идентификация формата среди нескольких родственных (multibyte Unicode). Т.е. описание системы не в терминах самой системы, а в терминах внешней „мета-системы“. Если угодна лингвистическая аналогия, извольте: есть книга на письменности деванагари, но без знания соответствующих языков непонятно, который использован: хинди, непали или, скажем, вообще санскрит. В таком случае BOM — это указание (понятное даже тем, кто не знает тех языков), на каком языке книга.
Фар есть инструмент, а не нянька. © 2009 DrKnS
SkvorBSD
Posts: 7
Joined: Mon 28 Nov, 2016 14:05

UTF8 BOM - это зло

Post by SkvorBSD »

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

BOM, практически, используется только при передаче текста между разными платформами. Но разные платформы невозможно соединить без адаптера. Имеем вопрос - почему на адаптер не возлагается перекодировка данных текстовой природы, хотя все остальные данные подвергаются полноценной перекодировке. Возникает бредовая ситуация, когда в адаптере на стадии передачи текста "отключается" перекодировка и данные передаются в raw. А уже конечный пользователь должен "знать" raw-формат источника данных и перекодировать в формат своей платформы.

Итого - BOM бывает нужным редко и только когда кто-то сдуру отключил работу уже существующей функции. Костыль, думаю, растёт от того, что Unicode неразумно упоминает порядок следования байтов и количество битов в байте.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

UTF8 BOM - это зло

Post by DrKnS »

SkvorBSD wrote: Описание формата внутри данных в принципе является абсурдом.
Какой прекрасный тред :popcorn:

Ходят слухи, что чуть ли не любой бинарный файл содержит описание формата. Хотелось бы услышать мнение экспертов.
О всяких #!/bin/sh внутри шелл-скриптов тоже можно.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

UTF8 BOM - это зло

Post by Smitis »

SkvorBSD wrote:Но разные платформы невозможно соединить без адаптера. Возникает вопрос - почему на адаптер не возлагается перекодировка данных текстовой природы, хотя все остальные данные подвергаются полноценной перекодировке.
Т.е., Вы утверждаете, что exe-файл, записанный на флешку, после того, как флешка будет вставлена в Мак, чудесным образом перекодируется в формат исполняемого файла Мака? И более того, такие же чудесные превращения должны происходить и с текстовыми файлами, например, меняться байты местами в юникодном тексте?
DrKnS wrote:Ходят слухи, что чуть ли не любой бинарный файл содержит описание формата. Хотелось бы услышать мнение экспертов.
О всяких #!/bin/sh внутри шелл-скриптов тоже можно.
Зло проникло везде :)

Непонятно, что в рамках этой концепции о вреде форматирования делать с отформатированными исходными текстами? Отказаться от отступов?
Разум когда-нибудь победит.
SkvorBSD
Posts: 7
Joined: Mon 28 Nov, 2016 14:05

UTF8 BOM - это зло

Post by SkvorBSD »

DrKnS wrote:
Обсуждение разумности/костыльности шабанга следует вынести в отдельную тему, т.к. не относится к проблематике передачи данных.
Можете озаглавить холивар "Шабанг - очарование скриптового единообразия или синтаксическое извращение языков!?"
И такида, шабанг не переносим без адаптера в COMMAND.COM
Smitis wrote:
-Нет. Я утверждаю, что ваши манипуляции с флешкой не являются соединением платформ. Если платформы в некоторых аспектах совпадают, то некоторые объекты будут переносимы, некоторые - окажутся мусором. Но для полноценного соединения различных платформ адаптер необходим. Где будет этот адаптер и какова его форма - как эпюр Монжа не по госту.
Last edited by SkvorBSD on Fri 22 Dec, 2017 00:25, edited 1 time in total.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

UTF8 BOM - это зло

Post by Smitis »

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

И, вообще, если уж придираться, то
Описание формата внутри данных в принципе является абсурдом.
в данном случае к BOM никакого отношения не имеет. Смотрите сами - сначала идут байты BOM (в вашей терминологии "формат"), затем собственно текст ("данные"). Всё раздельно. Вот если бы этот BOM был бы "размазан" по тексту, тогда да. А так - нет.
Разум когда-нибудь победит.
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

UTF8 BOM - это зло

Post by techie »

Всё было бы хорошо с вашим бомом, если бы он шёл заголовком в форматах файлов, где он предусмотрен спекой. .exe там или .xls. Так нет же - Far добавляет его куда не попадя. Я не против этого бома, но это маргинальная фича для маргинального круга пользователей маргинального файл менеджера.

Не должен Far быть здесь таким умным. Можете сравнить это с третьим питоном, который открывает текстовые файлы.. в какой кодировке? В utf-8? А вот фиг вам - в системной. Поэтому если у вас cp1251, а там на самом деле utf-8, то будет бам.

Я понимаю откуда ноги растут у фаровцев - автодетект всего и вся в редакторе - великая вещь, но когда редактор начинает незаметно пакостить бомами - это уже западлостроение.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

UTF8 BOM - это зло

Post by 2useven10 »

techie, из imbicellus club вы уже выписаны, но всё ещё тянет...
DV
Posts: 455
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 31 times
Been thanked: 15 times

UTF8 BOM - это зло

Post by DV »

Господа! Всем противникам BOM советую внимательно прочитать https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8
В частности, заострю ваше внимание на следующих двух пунктах:
* "Not using a BOM allows text to be backwards-compatible with some software that is not Unicode-aware".
В общем случае эта фраза справедлива исключительно для символов с кодами в диапазоне от 0 до 127 (т.е. ASCII). Наличие же символов вне этого диапазона приводит к проблеме определения кодировки этих символов. (Поясняю примером: однобайтные символы с кодами от 128 до 255 выглядят абсолютно по разному в зависимости от региональной настройки: то, что для нас кириллица, для европейцев будет выглядеть какими-то умляутами, для греков - греческими буквами, и т.д.)
* "On the other hand, without a BOM, heuristic analysis is required to determine what character encoding a file is using".
Перечитайте ещё раз: "heuristic analysis is required". Вот поэтому лучше иметь BOM - для однозначности и для скорости. Замечание "In general, UTF-8 is easily detected" на практике означает вот что: если у вас есть текстовый файл размером, скажем, 1 МБ, в котором первые, скажем, 512 кБ содержат исключительно ASCII-символы, и только потом появляются многобайтные символы UTF-8, то большинство редакторов определят этот файл как ANSI, поскольку из соображений быстродействия heuristic analysis обычно ограничивается несколькими килобайтами в начале файла. В то время как наличие UTF-8 BOM мгновенно (!) подсказало бы, что это файл с символами в кодировке UTF-8.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

UTF8 BOM - это зло

Post by Smitis »

Сплошная демагогия какая-то. О каких форматах файлов вообще идёт речь? О текстовых? Нет там никакого формата и никогда не было.
Разум когда-нибудь победит.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

UTF8 BOM - это зло

Post by DrKnS »

DV wrote: большинство редакторов определят этот файл как ANSI
Поэтому лучшие собаководы рекомендуют тупо все по умолчанию трактовать как utf-8, а вот если в процессе декодирования что-то пошло не так - включать интеллект.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

UTF8 BOM - это зло

Post by 2useven10 »

DrKnS wrote: рекомендуют тупо все по умолчанию трактовать как utf-8
Если сделать кодировкой по-умолчанию UTF-8 так и будет.
DrKnS wrote: если в процессе декодирования что-то пошло не так - включать интеллект.
А вот так или не так мы обычно действительно решаем по нескольким килобайтам.
А 'что-то не так' случается позже, когда интеллект уже не включается, хотя imho всё это некритично,
легко разруливается в ручном режиме и для этого раздела слишком скучно.
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

UTF8 BOM - это зло

Post by techie »

2useven10 wrote: techie, из imbicellus club вы уже выписаны, но всё ещё тянет...
Мне доставит удовольствие встретить там собрата по разуму с бесплатным билетом на поезд рейса 2.3.2 =/
Post Reply

Return to “О тщете всего сущего”