OberonCore https://forum.oberoncore.ru/ |
|
Что делать с невместимым юникодом? https://forum.oberoncore.ru/viewtopic.php?f=29&t=6658 |
Страница 2 из 4 |
Автор: | adimetrius [ Суббота, 03 Октябрь, 2020 20:40 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Иван Денисов писал(а): А вот знак удар́ения — полезная шт́ука. Хотелось бы, чтобы это в Блэкбоксе работало. И от него тоже каретка убегает. Так что, пожалуй, что придется это дело как-то учитывать. А почему вы ударяете согласные? Это баг или фича? Научить каретку не убегать - несложно, это небольшие изменения. Правда, они, наэн, размазаны будут по трем модулям: TextViews, TextSetters, TextControllers. |
Автор: | Илья Ермаков [ Воскресенье, 04 Октябрь, 2020 23:10 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Переходить к UTF-кодировкам, в итоге, не хочется (ломать удобную логику "1 элемент массива = 1 литера". Про сборные знаки - понятно, но всё же, это не совсем то же самое). И попытки их введения втаскивают BlackBox в длительную турбулентность - когда "пока не поймёшь, что где валяется и когда всё это кончится". Проще всего логически, алгоритмически - принять CHAR 4-байтным. Это решает всё, но ведёт к двухкратному перерасходу памяти. Ну и требует анализа всех библиотек, где там вместо SIZE(CHAR) сидит просто 2. Но можно принять размерность CHAR решением этапа компиляции. Так же, как платформу. Тогда по-умолчанию графическая среда собрана и работает с 4-байтным CHAR, но можно собрать, например, серверное приложение с 2-байтным, если мы знаем, что нам не нужно обслуживать азиатские тексты, например. Плюсы: - можно прямо сейчас закрепить консенсусно это решение; - при этом можно программировать и библиотеки оставлять, как есть, никуда не переделывая; - постепенно подготовить вариант компилятора на 4-байтный CHAR, также прочистить от завязки на 2-байтный весь код. |
Автор: | Info21 [ Пятница, 16 Октябрь, 2020 03:38 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
adimetrius писал(а): Info21 писал(а): К несчастью, стали встречаться html-странички, где й сделана парой символов. Какая-то дурная мода. Ужас какой... пришлите, пож, ссылку, когда попадется такая в след разhttps://polit.ru/article/2020/10/13/neuroeconomy/print/ Там таких й не все, но довольно много. |
Автор: | adimetrius [ Пятница, 16 Октябрь, 2020 15:50 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Прошу прощения, я внимательно прочел html-файл, но не нашел ни одной. Возможно, я не знаю, чего ищу? Или мы др др не поняли? Вы не могли бы указать точнее, в каком предложении? |
Автор: | Info21 [ Пятница, 16 Октябрь, 2020 18:10 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Если открыть ссылку в Хроме, сделать Ctrl+A, Ctrl+C, потом пойти в Blackbox и сделать Ctrl+V в окошко Log, то первая композитная й стоит в конце первого же предложения основного текста: Даниэль Канеман выдвинул предположение о существовании двух систем, обусловливающих принятие решений. Если поставить курсор после между "й" и "." и нажать пробел, то "й" развалится на две литеры. |
Автор: | adimetrius [ Суббота, 17 Октябрь, 2020 12:05 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Страшно жить... Если видишь в тексте й Не верь глазам своим... Вот она, правда: Ужас... окопаться... по периметру блекбокса выставить санитарные кордоны и беспощадно выкорчевывать UTF8 СС86... Вот интересно, откуда же она у них в их аштээмэлах берется? Следом падёт жертвой буква Ё, я полагаю. |
Автор: | adimetrius [ Суббота, 17 Октябрь, 2020 12:12 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Видимо, придется в Text реализовывать поддержку этих псевдолитер. Наверное, стоит в режиме показа скрытых символов считать эти литеры отдельными, а в режиме без скрытых символов - толковать эти две литеры как единое целое? |
Автор: | Info21 [ Суббота, 17 Октябрь, 2020 23:59 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
adimetrius писал(а): в режиме показа скрытых символов считать эти литеры отдельными, Другого способа не видно, если не размножать режимы.а в режиме без скрытых символов - толковать эти две литеры как единое целое? Но что делать с Find? |
Автор: | arlean1 [ Понедельник, 19 Октябрь, 2020 21:07 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Вот ещё какая хрень бывает с юникодом: Цитата: Использование символов юникода
Юникод — один из стандартов кодирования символов. Позволяет представить знаки почти всех письменных языков. Операционная система Windows поддерживает символы юникода в названиях файлов. А так как, Windows является самой распространённой системой на ПК, то значит и злоумышленник имеет некоторое преимущество перед жертвой. Юникод в название файла добавить очень просто, достаточно вызвать контекстное меню и выбрать нужный символ (рис. 1). В нашем случае, это код RLO (Начать отмену справа налево). Суть данного кода — зеркалирование символов послевставленного кода. Например, файл имеет название «TESTgpj. exe», вставив RLO после «TEST», то получим: «TESTexe. jpg». Смысл перестановки расширений файлов в том, что обычный пользователь в первую очередь посмотрит на расширение файла, чтобы не заразить свой компьютер. Жертва, руководствуясь своими базовыми знаниями, поймёт, что это изображение (формат «.jpg») и отбросит всякие подозрения. Антивирусные программы также бессильны в данном случае, так как просто-напросто не проверяют названия файлов на символы юникода в нём. Данная функция в операционной системе Windows является стандартной. |
Автор: | adimetrius [ Среда, 21 Октябрь, 2020 13:35 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Коллеги, я обнаружил еще одну, кмк, жемчужинку, доставшуюся ББ от Оберона. Формат OCF вмещает множество метаданных, многие из которых представляются числами - там и сям всякие индексы. Напр, сведения о процедуре содержат: ее номер в таблице; количество параметров; имя и имена всех параметров, которые представляются индексами в массиве имен; каждое имя начинается с указания длины и т.п. (не претендую на точность). И большинство этих чисел - небольшие. В памяти ЭВМ они занимают по 4 байта. А вот в файл выводится количество байт, необходимое и достаточное для представления каждого числа. Т.е. напр. число 28 займет 1 байт в файле, а число 1978 - два. Меня почему-то в восторг привела эта находка! Какое отношение к Уникоду: даже если использовать LONGCHAR или CHAR = {0X..FFFFFFFFX}, в ODC файл можно записывать, пользуясь той же методикой: ровно столько байт, сколько необходимо и достаточно для конкретной литеры. И это сбережет файлы от распухания. |
Автор: | Илья Ермаков [ Среда, 21 Октябрь, 2020 13:40 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Что-то очень странно про OCF. Учитывая, что он загружается в память блоками, как есть - и просто настраиваются ссылки. |
Автор: | adimetrius [ Среда, 21 Октябрь, 2020 13:51 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
arlean1 писал(а): Вот ещё какая хрень бывает с юникодом: А тут, я полагаю, проблема не в юникоде. А в том, что файл и его идентификация - это дело вовсе не пользователя. Файл - низкоуровневое понятие системного программирования, такого же уровня, как ячейки памяти, регистры ЦП, сегменты и т.п. (ну, мож чуть повыше Грамотно организованный интерфейс пользователя вообще не должен включать понятие файла. Пользователь не должен решать вопросы идентификации файлов (по имени, в таком-то каталоге, на таком-то диске и т.п.) Как пример - гугл-документы: пользователь создает документы, таблички, презентации и т.п., как-то там их для себя называет; файлы? не, там нет файлов, и нет имен файлов. Другой пример - модули в КП/ББ: модули - это не файлы. Это фундаментально отличает от других языков и "экосистем". (Не хватает только пары команд в меню, которые позволяли бы сохранять модули, не залезая в меню "Файл" и не открывая папочное окно; но для себя я сделал ; ) Т.е. следует развести два понятия: идентификатор файла (используется программистами); и некое название, обозначение того, что внутри него, которое используется пользователем. Названия может и не быть; название может быть реализовано как метаданные файла, если таковые поддерживает ФС, или приложения должны хранить их внутри файлов, если ФС не поддерживает метаданные. А к идентификаторам файлов можно бы предъявить те же требования, что и к идентификаторам переменных: буквы и цифры, и никаких головняков про пробелы, запятые, и всякие уникодные чудо-литеры, которые не видны или вообще левое обозначают правым ) |
Автор: | Александр Ильин [ Среда, 21 Октябрь, 2020 13:59 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
adimetrius писал(а): А вот в файл выводится количество байт, необходимое и достаточное для представления каждого числа. Т.е. напр. число 28 займет 1 байт в файле, а число 1978 - два. Надеюсь, новый вариант UTF8 переизобратать не будете?
Меня почему-то в восторг привела эта находка! Какое отношение к Уникоду: даже если использовать LONGCHAR или CHAR = {0X..FFFFFFFFX}, в ODC файл можно записывать, пользуясь той же методикой: ровно столько байт, сколько необходимо и достаточно для конкретной литеры. И это сбережет файлы от распухания. |
Автор: | adimetrius [ Среда, 21 Октябрь, 2020 14:00 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Илья Ермаков писал(а): Что-то очень странно про OCF. Учитывая, что он загружается в память блоками, как есть - и просто настраиваются ссылки. Взгляните на DevCPM.WriteNum и .ReadNum; Kernel.RefNum. возможно, я и ошибся. |
Автор: | adimetrius [ Среда, 21 Октябрь, 2020 14:02 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Александр Ильин писал(а): Надеюсь, новый вариант UTF8 переизобратать не будете? Я правильно понял вас, что описанная методика напоминает UTF8? |
Автор: | Александр Ильин [ Среда, 21 Октябрь, 2020 14:04 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
adimetrius писал(а): Илья Ермаков писал(а): Что-то очень странно про OCF. Учитывая, что он загружается в память блоками, как есть - и просто настраиваются ссылки. Взгляните на DevCPM.WriteNum и .ReadNum; Kernel.RefNum. возможно, я и ошибся. Я читал когда-то описание этого формата. По-моему, старший бит кодирует необходимость прочитать и добавить ещё один байт. Почти как в UTF-8. Код: WHILE b < 0 DO Это как раз цикл по старшему биту при чтении. В UTF-8 отличие в том, что первый байт сразу содержит длину литеры. |
Автор: | Александр Ильин [ Среда, 21 Октябрь, 2020 14:16 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Впрочем, Обероновский формат компактнее UTF-8, так что можно, наверное, хранить прямо так же, как числа. Вроде как избыточность не нужна, да и вопрос совместимости не стоит. |
Автор: | adimetrius [ Среда, 21 Октябрь, 2020 21:21 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
Оберон рулит ) даже в мелочах |
Автор: | Илья Ермаков [ Четверг, 22 Октябрь, 2020 10:39 ] |
Заголовок сообщения: | Re: Что делать с невместимым юникодом? |
adimetrius писал(а): Илья Ермаков писал(а): Что-то очень странно про OCF. Учитывая, что он загружается в память блоками, как есть - и просто настраиваются ссылки. Взгляните на DevCPM.WriteNum и .ReadNum; Kernel.RefNum. возможно, я и ошибся. А, в доп. символьной информации да. В основных дескрипторах метаинформации - нет. |
Страница 2 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |