Забавный но досадный глюк

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Забавный но досадный глюк

Сообщение hovadur » 08.04.2013 18:47:01

alexey38 писал(а):Пользуясь Вашей логикой UTF-16 тоже совместим с ASCII-символами.

Нет, потому что, я уже показывал, что предположим есть файл:
Код: Выделить всё
Section=Auto

Сохраняя этот файл в формате UTF-8, я могу открыть его любой программой, в том числе и не понимающей ни UTF-8, ни UTF-16.
А сохраняя его в UTF-16, я уже не открою его программой, не понимающей UTF-16.
Вот так я понимаю совместимость c ASCII-символами.
hovadur
постоялец
 
Сообщения: 116
Зарегистрирован: 31.01.2013 15:50:41

Re: Забавный но досадный глюк

Сообщение alexey38 » 08.04.2013 18:49:38

hovadur писал(а):Сохраняя этот файл в формате UTF-8, я могу открыть его любой программой, в том числе и не понимающей ни UTF-8, ни UTF-16.
А сохраняя его в UTF-16, я уже не открою его программой, не понимающей UTF-16.
Вот так я понимаю совместимость c ASCII-символами.

Текстовый файл с содержимым "Section=Auto", в ASCII и UTF-8 кодировке будет одинаков.
Но текстовый файл с содержимым "Section=Авто", в ASCII и UTF-8 кодировке будет разный. Я так и не могу понять, в чем выражается Ваша совместимость, если файлы разные, как по длине, так и по составу байт.

Более того открыв такой файл в любой программе, не понимающей UTF, Вы увидите либо "Section=Авто", либо "Section=╨Р╨▓╤В╨╛".
Если Вы в любой программе, не понимающей UTF откроете эту фразу из файла UTF16, то увидите: "яюS e c t i o n = ►♦2♦B♦>♦".
Объясните мне, чем "Section=Авто" более совместима, чем "яюS e c t i o n = ►♦2♦B♦>♦"? Я хочу видеть "Section=Авто", но не вижу этого. В чем выражается совместимость?
Более того, если я ANSI (1251) файл с "Section=Авто" случайно открою, думая, что там UTF-8, то получу вообще непонятно что (Notepad++ не смог это показать в виде символов, он показал это в виде кодов).
Объясните мне на простом примере, как UTF-8 лучше, если он хуже?
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Забавный но досадный глюк

Сообщение hovadur » 08.04.2013 18:54:48

Так файл с содержимым "Section=Auto" откроется в любой программе, будет он в ASCII, или в UTF-8. Но, если его сохранить в UTF-16 его уже не открыть любой программой.
hovadur
постоялец
 
Сообщения: 116
Зарегистрирован: 31.01.2013 15:50:41

Re: Забавный но досадный глюк

Сообщение alexey38 » 08.04.2013 19:24:28

Зачем файл с содержимым "Section=Auto" сохранять в кодировке UTF-8? Вы его просто считывайте в ANSI или ASCII кодировке.
Не нужно совпадение результатов на частном примере подавать как совместимость. Совместимость это когда результат будет совпадать в любом случае, а здесь это не обеспечивается. Поэтому UTF-8 и ASCII не совместимы между собой.

Если Вы сделаете калькулятор, который при любых операциях будет выдавать цифру "4", то Вы не можете его назвать калькулятором, хотя 2+2=4, но 3*3 уже равно 9, а не 4. Так и в Вашем случае, "Section=Auto", но "Section=Авто" <> "Section=Авто". Это доказательство несовместимости.

Вы мне пытаетесь доказать, что компьютер очень удобен для забивания гвоздей, особенно хорош винчестер, твердый такой, как молоток. Так и кодировку UTF-8 создавали не ради того, чтобы передавать латинские символы.

Добавлено спустя 2 минуты 4 секунды:
Более того, файл формата UTF-16 c "Section=Auto" Вы прекрасно в неуникодовском редакторе прочитаете, т.к. там увидите "яюS e c t i o n = A u t o ", что не мешает прочтению и пониманию написанного.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Забавный но досадный глюк

Сообщение hovadur » 08.04.2013 19:55:09

Хорошо, пусть у нас есть файл
Код: Выделить всё
Section=Auto
Subsection=Авто

Сохраняю его как UTF-8 (1.txt).
Открываю его в FAR:
Код: Выделить всё
Section=Auto
Subsection=Авто

Сохраняю его как UTF-16LE (2.txt).
Открываю его в FAR:
Код: Выделить всё
яюS e c t i o n = A u t o

S u b s e c t i o n = ►♦2♦B♦>♦

Какой файл понятнее? Конечно 1.txt, тот, который был сохранен в UTF-8. Значит UTF-8 лучше UTF-16. Ты согласен?
hovadur
постоялец
 
Сообщения: 116
Зарегистрирован: 31.01.2013 15:50:41

Re: Забавный но досадный глюк

Сообщение alexey38 » 08.04.2013 20:07:30

hovadur писал(а):Какой файл понятнее? Конечно 1.txt, тот, который был сохранен в UTF-8. Значит UTF-8 лучше UTF-16. Ты согласен?

Часть текста "Section=Auto Subsection=" одинаково понятна в обоих случаях, тут уже на любителя, кто то любит уже, кто-то шире в виде: "S e c t i o n = A u t o S u b s e c t i o n = ". Это вопросы эстетики, гармоничности.
Но значение подсекции одинаково непонятно как в виде "Авто", так и в виде "►♦2♦B♦>♦".

Вывод: понятность файлов UTF-8 и UTF-16LE, открытых в ANSI-просмоторщике одинаковая и равнозначная. Эстетичный вид формата UTF-8 привычнее, чем UTF-16LE. Оба формата и UTF-8 и UTF-16LE одинаково несовместимы с ANSI.

Добавлено спустя 2 минуты 6 секунд:
Сравнивая с позиции эстетики, как будет выглядеть в неуникодовском редакторе уникодовский тест все зависит от выбранного шрифта. Для некоторых шрифтов формат UTF-16 будет лучше смотреться. Вот пример из каких-то случайных шрифтов, которые по чему-то есть у меня в ОС.
Безымянный2.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Забавный но досадный глюк

Сообщение hovadur » 08.04.2013 20:12:51

alexey38 писал(а):Оба формата и UTF-8 и UTF-16LE одинаково несовместимы с ANSI

С ANSI они не совместимы оба, но с ASCII совместим только UTF-8. Так что делаем вывод UTF-8 лучше UTF-16 и закрываем тему?
hovadur
постоялец
 
Сообщения: 116
Зарегистрирован: 31.01.2013 15:50:41

Re: Забавный но досадный глюк

Сообщение alexey38 » 08.04.2013 20:17:53

Если очень нужно прочитать английский текст из файла с кодировкой UTF-16 или UTF-32, но Вы имеете под рукой только ANSI-шную строковую библиотеку, то отфильтровав символы по критерию "#31 < символ < #128", Вы получите значение оригинальный текст ANSI-кодировки. Данный алгоритм слишком прост, и реализуем даже школьником, начавшим изучать паскаль, чтобы его считать за недостаток UTF-16 или UTF-32. Поэтому все пока приведенные аргументы в пользу UTF-8 находятся на уровне детского выражения: "я умею пока считать только до 10".
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Забавный но досадный глюк

Сообщение hovadur » 08.04.2013 20:20:44

alexey38 писал(а):приведенные аргументы в пользу UTF-8 находятся на уровне детского выражения: "я умею пока считать только до 10"

а какие твои аргументы будут в пользу UTF-16?

Добавлено спустя 2 минуты 9 секунд:
только не отправляй перечитывать форум, ответь здесь. Подведи итоги, чем тебе UTF-16 больше нравится.
hovadur
постоялец
 
Сообщения: 116
Зарегистрирован: 31.01.2013 15:50:41

Re: Забавный но досадный глюк

Сообщение runewalsh » 08.04.2013 20:25:51

alexey38 писал(а):Оба формата и UTF-8 и UTF-16LE одинаково несовместимы с ANSI.

Неверно. Когда говорят о совместимости, имеют в виду, что для UTF-8 сработают большинство ANSI-функций — конкатенация, Pos и т. п.
99% объёма исходников (в т. ч. HTML, хотя там доля поменьше) — 7-битная ASCII, поэтому для них ничего рациональнее UTF-8 нет.
Просадки скорости по сравнению даже с UTF-32 (при итерировании, а не случайном доступе) не наблюдается — сложность декодирования компенсируется компактностью данных.
У UTF-16 нет объективных преимуществ перед UTF-8. Если забивать на суррогатные пары, то a) о поддержке юникода речи идти не может, b) называй вещи своими именами, это кодировка UCS-2.
Последний раз редактировалось runewalsh 08.04.2013 20:30:17, всего редактировалось 3 раз(а).
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25

Re: Забавный но досадный глюк

Сообщение alexey38 » 08.04.2013 20:26:27

hovadur писал(а):с ASCII совместим только UTF-8. Так что делаем вывод UTF-8 лучше UTF-16 и закрываем тему?

В реальных условиях с 8-битным ASCII (расширенным) не совместимы оба и закрываем тему. Так как 7-битный ASCII - это такая экзотика, совместимость с которым не является преимуществом.

Оба формата не совместимы с перфокартами, т.к. на компах, с поддержкой уникода на уровне ОС нет поддержки устройства считывания перфокарт, потому древние ЭВМ лучше современных. Вы это имели в виду, когда говорили про преимущество UTF-8?
У Вас довольно странная логика в части преимуществ и недостатков. Она очень напоминает фразы, широко звучавшие в 80х годах, типа: Калькулятор лучше компьютера, т.к. у него меньше клавиш и решать на нем проще. Отсутствие компьютера лучше наличия компьютера, т.к. не надо изучать программирование.

Добавлено спустя 2 минуты 31 секунду:
runewalsh писал(а):99% объёма исходников (в т. ч. HTML, хотя там доля поменьше) — 7-битная ASCII, поэтому для них ничего рациональнее UTF-8 нет.

Только идиот будет использовать для работы с 7-битным ASCII текстом строковые функции под UTF-8. И не надо гнать шизофринические фразы про рациональность использования UTF-8.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Забавный но досадный глюк

Сообщение debi12345 » 08.04.2013 20:31:08

Смысл UTF-8 - быстрое внедрения алфавитов инеопланетян, как только они объявятся, так сказать - чтобы быть во всеоружии. Ну и максимально компактное ХРАНЕНИЕ локаль-независимого текста - текстовые библиотеки, WEB-страницы,... А в остальном... даже китайцы урезали свой экранно/клавиатурный алфавит до "симплифайт" и спокойно уместились в UCS2.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Забавный но досадный глюк

Сообщение alexey38 » 08.04.2013 20:31:34

runewalsh писал(а):Когда говорят о совместимости, имеют в виду, что для UTF-8 сработают большинство ANSI-функций — конкатенация, Pos и т. п.

Эти же строковые ANSI-функции будут работать и с UTF-16, так что совместимость ANSI-функций равнозначна и для UTF-8 и для UTF-16 и для UTF-32.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Забавный но досадный глюк

Сообщение runewalsh » 08.04.2013 20:32:55

alexey38 писал(а):Только идиот будет использовать для работы с 7-битным ASCII текстом строковые функции под UTF-8

Твои предложения?
alexey38 писал(а):И не надо гнать шизофринические фразы про рациональность использования UTF-8.

Not sure if trolling of just very stupid.jpg
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25

Re: Забавный но досадный глюк

Сообщение hovadur » 08.04.2013 20:34:28

alexey38 какие твои аргументы будут в пользу UTF-16?
hovadur
постоялец
 
Сообщения: 116
Зарегистрирован: 31.01.2013 15:50:41

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 86

Рейтинг@Mail.ru