Page 3 of 3

UTF8 BOM - это зло

Posted: Thu 01 Dec, 2016 12:48
by Abs

Latest post of the previous page:

SkvorBSD
Если вы считаете BOM описанием формата, информатику вам точно преподавали неадекватно. :)

UTF8 BOM - это зло

Posted: Thu 01 Dec, 2016 13:03
by HaRT
SkvorBSD wrote:Source of the post Пусть BOM - это описание семантики китайского и оно помещено в начало книги.
Совершенно некорректная аналогия! BOM — это не описание формата, а лишь идентификация формата среди нескольких родственных (multibyte Unicode). Т.е. описание системы не в терминах самой системы, а в терминах внешней „мета-системы“. Если угодна лингвистическая аналогия, извольте: есть книга на письменности деванагари, но без знания соответствующих языков непонятно, который использован: хинди, непали или, скажем, вообще санскрит. В таком случае BOM — это указание (понятное даже тем, кто не знает тех языков), на каком языке книга.

UTF8 BOM - это зло

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

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

Итого - BOM бывает нужным редко и только когда кто-то сдуру отключил работу уже существующей функции. Костыль, думаю, растёт от того, что Unicode неразумно упоминает порядок следования байтов и количество битов в байте.

UTF8 BOM - это зло

Posted: Thu 01 Dec, 2016 19:17
by DrKnS
SkvorBSD wrote:Source of the post Описание формата внутри данных в принципе является абсурдом.

Какой прекрасный тред :popcorn:

Ходят слухи, что чуть ли не любой бинарный файл содержит описание формата. Хотелось бы услышать мнение экспертов.
О всяких #!/bin/sh внутри шелл-скриптов тоже можно.

UTF8 BOM - это зло

Posted: Thu 01 Dec, 2016 21:05
by Smitis
SkvorBSD wrote:Но разные платформы невозможно соединить без адаптера. Возникает вопрос - почему на адаптер не возлагается перекодировка данных текстовой природы, хотя все остальные данные подвергаются полноценной перекодировке.
Т.е., Вы утверждаете, что exe-файл, записанный на флешку, после того, как флешка будет вставлена в Мак, чудесным образом перекодируется в формат исполняемого файла Мака? И более того, такие же чудесные превращения должны происходить и с текстовыми файлами, например, меняться байты местами в юникодном тексте?

DrKnS wrote:Ходят слухи, что чуть ли не любой бинарный файл содержит описание формата. Хотелось бы услышать мнение экспертов.
О всяких #!/bin/sh внутри шелл-скриптов тоже можно.
Зло проникло везде :)

Непонятно, что в рамках этой концепции о вреде форматирования делать с отформатированными исходными текстами? Отказаться от отступов?

UTF8 BOM - это зло

Posted: Fri 02 Dec, 2016 08:58
by SkvorBSD
DrKnS wrote:Source of the post

Обсуждение разумности/костыльности шабанга следует вынести в отдельную тему, т.к. не относится к проблематике передачи данных.
Можете озаглавить холивар "Шабанг - очарование скриптового единообразия или синтаксическое извращение языков!?"
И такида, шабанг не переносим без адаптера в COMMAND.COM
Smitis wrote:Source of the post

-Нет. Я утверждаю, что ваши манипуляции с флешкой не являются соединением платформ. Если платформы в некоторых аспектах совпадают, то некоторые объекты будут переносимы, некоторые - окажутся мусором. Но для полноценного соединения различных платформ адаптер необходим. Где будет этот адаптер и какова его форма, уже рояля не играет.

UTF8 BOM - это зло

Posted: Sat 03 Dec, 2016 12:15
by Smitis
Ну понятно, осталось изобрести некое магическое устройство под названием "адаптер" (пусть даже софтварный), который волшебным образом будет угадывать форматы файлов и не менее волшебным способом их превращать в что-то другое.

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

UTF8 BOM - это зло

Posted: Tue 18 Apr, 2017 04:34
by techie
Всё было бы хорошо с вашим бомом, если бы он шёл заголовком в форматах файлов, где он предусмотрен спекой. .exe там или .xls. Так нет же - Far добавляет его куда не попадя. Я не против этого бома, но это маргинальная фича для маргинального круга пользователей маргинального файл менеджера.

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

Я понимаю откуда ноги растут у фаровцев - автодетект всего и вся в редакторе - великая вещь, но когда редактор начинает незаметно пакостить бомами - это уже западлостроение.

UTF8 BOM - это зло

Posted: Tue 18 Apr, 2017 07:31
by 2useven10
techie, из imbicellus club вы уже выписаны, но всё ещё тянет...

UTF8 BOM - это зло

Posted: Tue 18 Apr, 2017 14:19
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.

UTF8 BOM - это зло

Posted: Tue 18 Apr, 2017 18:04
by Smitis
Сплошная демагогия какая-то. О каких форматах файлов вообще идёт речь? О текстовых? Нет там никакого формата и никогда не было.

UTF8 BOM - это зло

Posted: Tue 18 Apr, 2017 19:12
by DrKnS
DV wrote:Source of the post большинство редакторов определят этот файл как ANSI

Поэтому лучшие собаководы рекомендуют тупо все по умолчанию трактовать как utf-8, а вот если в процессе декодирования что-то пошло не так - включать интеллект.

UTF8 BOM - это зло

Posted: Tue 18 Apr, 2017 19:34
by 2useven10
DrKnS wrote:Source of the post рекомендуют тупо все по умолчанию трактовать как utf-8

Если сделать кодировкой по-умолчанию UTF-8 так и будет.
DrKnS wrote:Source of the post если в процессе декодирования что-то пошло не так - включать интеллект.

А вот так или не так мы обычно действительно решаем по нескольким килобайтам.
А 'что-то не так' случается позже, когда интеллект уже не включается, хотя imho всё это некритично,
легко разруливается в ручном режиме и для этого раздела слишком скучно.

UTF8 BOM - это зло

Posted: Fri 21 Apr, 2017 07:19
by techie
2useven10 wrote:Source of the post techie, из imbicellus club вы уже выписаны, но всё ещё тянет...


Мне доставит удовольствие встретить там собрата по разуму с бесплатным билетом на поезд рейса 2.3.2 =/